おぼえがき

おぼえがき

bash $*と$@の違い

2007-04-25 | bash
$*

シェルの予約変数IFSに値をセットしておくと、区切り文字を変更することができます。この場合はダブルクオーテーション(")で囲む必要があります。例えば以下のように使用できます。


$ IFS=:
$ echo "$*"
a:b:c:d

$@

上記「$*」とほとんど同じですが、予約変数「IFS」の影響は受けません。つねに区切り文字は空白です。

上記「@」と「*」は上記で紹介したbash version2.0 の機能である配列変数にも応用できます。
$ IFS=:
$ array=(a b c d)
$ echo "${array[*]}"
a:b:c:d

$ echo "${array[@]}
a b c d