LoginSignup
18
11

More than 5 years have passed since last update.

私的メモ bashの配列 @(アットマーク)と *(アスタリスク)の違い

Posted at

参照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"が、スペース区切りされない。
18
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
11