Bashスクリプトに渡された引数の数を調べるにはどうすればよいですか?
これは私が現在持っているものです:
#!/bin/bash
i=0
for var in "$@"
do
i=i+1
done
これを行う他の(より良い)方法はありますか?
引数の数は$#
です
詳細については、このページで検索してください。 http://tldp.org/LDP/abs/html/internalvariables.html#ARGLIST
#!/bin/bash
echo "The number of arguments is: $#"
a=${@}
echo "The total length of all arguments is: ${#a}: "
count=0
for var in "$@"
do
echo "The length of argument '$var' is: ${#var}"
(( count++ ))
(( accum += ${#var} ))
done
echo "The counted number of arguments is: $count"
echo "The accumulated length of all arguments is: $accum"
元の参照を追加するには:
引数の数は、特別なパラメーター$#
から取得できます。値0は「引数なし」を意味します。 $#
は読み取り専用です。
引数処理のためにshift
と組み合わせて使用すると、特別なパラメーター$#
は、Bash Builtin shift
が実行されるたびに減少します。
.4.2特殊パラメーター セクションの Bash Reference Manual を参照してください。
「シェルはいくつかのパラメーターを特別に扱います。これらのパラメーターは参照のみ可能です」
このセクションでは、キーワード$# 「10進数の位置パラメータの数に展開します。」
以下は簡単なものです-
cat countvariable.sh
echo "$@" |awk '{for(i=0;i<=NF;i++); print i-1 }'
出力:
#./countvariable.sh 1 2 3 4 5 6
6
#./countvariable.sh 1 2 3 4 5 6 Apple orange
8