シェルの特殊変数である$*と$@の違い †シェルスクリプトに渡された引数を展開する、$* と $@ の動作の違いについて以下に記述します。 関連記事 †ダブルクォーテーションで囲むと動作が違ってくる †以下のサンプルスクリプトを使い、 $* と $@ の違いを説明します。 サンプルシェルスクリプト †#!/bin/bash echo '== $* test ==' for arg in $* do echo $arg done echo '== "$*" test ==' for arg in "$*" do echo $arg done echo '== $@ test ==' for arg in $@ do echo $arg done echo '== "$@" test ==' for arg in "$@" do echo $arg done 実行結果(その1) †以下の実行結果を見た結果のまとめ
$ ./arg.sh 1 2 3 == $* test == 1 2 3 == "$*" test == 1 2 3 == $@ test == 1 2 3 == "$@" test == 1 2 3 実行結果(その2) †以下の実行結果を見た結果のまとめ
$ ./arg.sh "1 2 3" "a b c" == $* test == 1 2 3 a b c == "$*" test == 1 2 3 a b c == $@ test == 1 2 3 a b c == "$@" test == 1 2 3 a b c まとめ †
以上、$*, $@ の違いでした。 |