#参照URL
http://takuya-1st.hatenablog.jp/entry/2016/12/27/053456
http://www.task-notes.com/entry/20150119/1421646435
#先に結論
こだわりがなければ、@を使う方が良い。
#違いメモ
(詳細は、参考URL)
##配列を " (ダブルクォート)で囲む場合に、@と*で違いが出る。forの場合。
arr=("1" "2" "3")
for i in "${arr[@]}"; do
echo $i
done
--- 実行結果 ---
1
2
3
----------------
for i in "${arr[*]}"; do
echo $i
done
--- 実行結果 ---
1 2 3
----------------
"${arr[@]}"と"${arr[*]}"で結果に違いがでる。
##配列を " (ダブルクォート)で囲む場合に、@と*で違いが出る。echoの場合。(IFSを利用できる。)
arr=("1" "2" "3")
IFS=-
echo "${arr[@]}"
--- 実行結果 ---
1 2 3
----------------
echo "${arr[*]}"
--- 実行結果 ---
1-2-3
----------------
IFSを利用して、結果を出すことができる。
#その他
##配列を " (ダブルクォート)で囲み、@を利用する場合。配列の要素にスペースが入っていても大丈夫。
arr=("1" "2 2" "3")
for i in "${arr[@]}"; do
echo $i
done
--- 実行結果 ---
1
2 2
3
----------------
for i in ${arr[@]}; do
echo $i
done
--- 実行結果 ---
1
2
2
3
----------------
"${arr[@]}"を使えば、"2 2"が、スペース区切りされない。