シェルスクリプトに渡された引数の数が正確に2であることを確認する方法は?

シェルスクリプトに渡された引数の数が正確に2であることを確認する方法は?

シェルスクリプトに渡されたパラメータの数を確認するには、シェルスクリプトで次のことが必要であることをある程度知っています。実施例1

if [ "$#" -ne 2 ]; then
   do something;
fi

しかし、実行時にシェルスクリプトの名前が引数の一部と見なされ、Pythonスクリプトが含まれているかどうかは少し混乱していると思いますsys.argv

端末の例は次のとおりです。 実施例2

./script.sh $1 $2

この場合、実施例2実際に渡されたと見なされる引数の数は何ですか?実施例1それ以外の場合はループ。

答え1

スクリプト名は位置パラメータの一部とは見なされません。これは意味する

somescript arg1 arg2

つまり、と$1に設定されます。arg1$2arg2$#2

スクリプトの名前はで提供されていますが、$0これを$0特別にすることはいいえ配列には$@長さ$#(要素数)が含まれます$@

関連情報