1

関数で使用するときに取得する文字列の長さを取得したいと思い"$*"ます。

私は試した:

echo ${#"$*"}

echo ${#"*"}

どちらも私に悪い置換エラーを与えました。

4

4 に答える 4

0

一時変数を使用することが唯一の基本的な方法であり、IFS の設定を解除するか、空の文字列に設定して間にスペースが入らないようにする必要があります。$@ ではなく $* を使用すると、間にスペースができます。

IFS= eval "__=\"\$*\""
echo "${#__}"

もう 1 つの方法は、すべての文字列をループすることです。

L=0; for __; do (( L += ${#__} )); done
echo "$L"
于 2013-08-15T19:10:05.040 に答える
0

$# は、関数に渡される位置パラメーターの数を保持します。

それを試してみてください:

#!/bin/bash

t() {
  echo "num args=$#"
  echo "all $*"
}

t "$@"
于 2015-01-19T16:20:59.700 に答える
0

次のいずれかを使用できます。

expr length "$*"
echo "$*" | awk '{print length}'
于 2013-08-15T20:31:09.237 に答える