"$@"

 シェルスクリプトやシェル関数の引数全てをそのまま引き継ぎます。

 $@ は "$@" のようにダブルクォートで囲んで記述する事により、実行した際の引数を『"$1" "$2" "$3" ・・・』のように全ての位置パラメータをそれぞれダブルクォートで囲んだ状態にしてくれます。位置パラメータの個数が0個の場合は何も展開されません。

 シェルスクリプトを起動する際に付けられた引数の内容を、そのまま使いたいときに"$@"を使用します。
「"$@"」は位置パラメータの個数に応じて『"$1" "$2" "$3" ・・・』のようにそれぞれの引数をダブルクォートで括ってくれるので、位置パラメータの値としてスペースや*、?、はたまた特殊な意味を持つ記号などが含まれていても、その特殊な記号のまま表示されます。

 $@のようにダブルクォートなしで記述すると『$1 $2 $3 ・・・』のようにダブルクォートなしで展開されるが、これはほとんど意味を成しません。$@を使う以上必ずダブルクォートで囲って使用しないと意味がありません。