シェル スクリプトのハンドルは$@
、スクリプトに渡されるすべての引数の配列であると考えます。これは本当ですか?
普段は検索エンジンを使って情報収集しているのですが、グーグルで検索できず$@
、何でも簡単に見つかるということに慣れてしまっているので、質問させてください。
ベストアンサー1
はい。Bash のマニュアルページ(最初にアクセス)特別なパラメータの下:
特別なパラメータ
シェルはいくつかのパラメータを特別に扱います。これらのパラメータは参照のみ可能であり、割り当ては許可されません。
*
1 から始まる位置パラメータに展開されます。展開が二重引用符内で行われる場合、各パラメータの値が IFS 特殊変数の最初の文字で区切られた単一の単語に展開されます。つまり、 は"$*"
と同等です。ここで、"$1c$2c..."
はc
IFS 変数の値の最初の文字です。IFS が設定されていない場合、パラメータはスペースで区切られます。IFS が null の場合、パラメータは区切り文字を介さずに結合されます。
@
位置パラメータに展開します。展開は 1 から始まります。展開が二重引用符内で発生する場合、各パラメータは別々の単語に展開されます。つまり、は..."$@"
と同等です。"$1"
"$2"
二重引用符で囲まれた展開が単語内で発生する場合、最初のパラメータの展開は元の単語の先頭部分と結合され、最後のパラメータの展開は元の単語の最後の部分と結合されます。位置パラメータがない場合、"$@"
は$@
何も展開されません (つまり、削除されます)。