$#はシェルで何を意味しますか?

$#はシェルで何を意味しますか?

$#シェルではどういう意味ですか?

私はこのようなコードを持っています

if [ $# -eq 0 ]
then

これが何を意味するのかを理解したいのですが、$#Googleはこの種の検索を正しく実行しません。

答え1

いつでもシェルのマニュアルページを確認できます。man bash説明する:

Special Parameters
   #      Expands to the number of positional parameters in decimal.

したがって、シェルスクリプトは、次のコードを使用して提供された引数の数を確認できます。

if [ "$#" -eq 0 ]; then
  echo "you did not pass any parameter"
fi

答え2

実際、

`$` refer to `value of` and
`#` refer to `number of / total number`

ただこんなに一緒に

`$#` refer to `The value of the total number of command line arguments passed.`

したがって、$#渡された引数/パラメータの数を確認し、期待どおりに素晴らしいことを処理できます。

同様に、我々は

`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`

など。

答え3

それは

  1. スクリプトを呼び出すためのパラメータの数

  2. スクリプトに設定されたパラメータの数set -- foo bar

  3. (関数内で使用される場合)関数を呼び出す引数の数(setここでも機能できます)。

これについては、bashのマニュアルページの「特殊パラメータ」セクションに説明されています。

関連情報