$@
引数の展開
特殊処理
引数0個の場合は削除される。
先頭の引数は手前の文字列があれば結合される。
末尾の引数は直後の文字列があれば結合される。
ダブルクォーテーションで括られていれば、展開された引数もダブルクォーテーションで括られる。(引数の間はIFSによるセパレータで区切られる)
code:sh
example_cmd "$@"
↓
example_cmd "$1" "$2" "$3"
このおかけで空白入り引数も正しく処理できる。
シェルスクリプトの変数に代入した場合どうなるか?
code:let.sh
X="$@"
シェルスクリプトの変数は連続した文字列しか受け入れようがないので、IFSによるセパレータで区切られた一連の文字列になってしまう。
set 組み込みコマンドで引数を再設定することができる。
set -- 引数1 引数2 ...
ファイル名展開する場合
set -f -- 引数1 引数2 ...
ファイル名展開を防ぎたい場合
関連
keyword
ドルアットマーク