このバッシュガイド説明する:
インデックス番号がある場合、
@
または*
配列のすべてのメンバーが参照されます。
私がこれを行うとき:
LIST=(1 2 3)
for i in "${LIST[@]}"; do
echo "example.$i"
done
希望の結果を提供します。
example.1
example.2
example.3
しかし${LIST[*]}
、
example.1 2 3
代わりに。
なぜ?
編集:これは実際に使用するprintf
と同じ結果を提供します。@
*
ベストアンサー1
違いは微妙です。"${LIST[*]}"
(like "$*"
)は単一の引数を生成し、"${LIST[@]}"
(like "$@"
)は各項目を別々の引数に拡張します。
LIST=(1 2 3)
for i in "${LIST[@]}"; do
echo "example.$i"
done
リストを複数の変数として処理します(印刷)。
しかし:
LIST=(1 2 3)
for i in "${LIST[*]}"; do
echo "example.$i"
done
リストは変数として扱われます。