19
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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"が、スペース区切りされない。
19
12
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
19
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?