シェルでの$#の意味


25

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

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

if [ $# -eq 0 ]
then

私は何を$#意味するのかを理解したいのですが、Google検索はこれらの種類のものを検索するには非常に悪いです。


3
句読点を使用した検索では、symbolhound.comを使用します。通常、必要なものを見つけます。
エリックアンドレス14年


より良い参照とSEOのために:強打、ナンバーサイン、シャープ、U + 0023、&#35 ;、コメントサイン、ドル!
クレメント

回答:


37

シェルのmanページをいつでも確認できます。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

@NoName 自身manも含め、ほとんど何でもできmanます。また、aproposしばらくしてみてください。
CVn 14年

GNUツール(Linuxでは、など)を使用してOSを使用するときは、も可能@NoName infoパッケージがいくつかある場合はmanページのいずれかのために、またはadditionnal情報(非常にdetailled、および区画)
オリヴィエ・デュラック

12

実際、

`$` 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`


8

あれは

  1. スクリプトが呼び出されたパラメーターの数

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

  3. (関数内で使用される場合)関数が呼び出されたパラメーターの数(setそこでも機能します)。

これは、ブロック「特殊パラメーター」のbashのマニュアルページで説明されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.