関数で使用するときに取得する文字列の長さを取得したいと思い"$*"
ます。
私は試した:
echo ${#"$*"}
と
echo ${#"*"}
どちらも私に悪い置換エラーを与えました。
関数で使用するときに取得する文字列の長さを取得したいと思い"$*"
ます。
私は試した:
echo ${#"$*"}
と
echo ${#"*"}
どちらも私に悪い置換エラーを与えました。
一時変数を使用することが唯一の基本的な方法であり、IFS の設定を解除するか、空の文字列に設定して間にスペースが入らないようにする必要があります。$@ ではなく $* を使用すると、間にスペースができます。
IFS= eval "__=\"\$*\""
echo "${#__}"
もう 1 つの方法は、すべての文字列をループすることです。
L=0; for __; do (( L += ${#__} )); done
echo "$L"
$# は、関数に渡される位置パラメーターの数を保持します。
それを試してみてください:
#!/bin/bash
t() {
echo "num args=$#"
echo "all $*"
}
t "$@"
次のいずれかを使用できます。
expr length "$*"
echo "$*" | awk '{print length}'