$#
を使用 特殊変数。その値は引数の数です。したがって、以下のみを含むスクリプトがある場合:
echo $#
次のように実行します:
thatscript foo bar baz quux
4 と表示されます。
あなたの場合、次のようなことをしたいかもしれません:
if [ $# -lt 2 ]; then
# TODO: print usage
exit 1
fi
引数に「少なくとも 2 つのもの」が含まれている必要があるという質問の要件に従って、以下を確認する方が正確であると思います:
if (( $# < 2 )); then
# TODO: print usage
exit 1
fi
算術展開 ((
の使用 ))
これが exit 1
にヒットするのを防ぎます 2 以外の任意の値。
if [ $# -ne 2 ];
を使用する場合 2 以外の任意の数の引数に対して条件をトリガーします。
編集:受け入れられた回答が更新され、これと同等の (そしてより移植性の高い?) 例が含まれているようです。