知に至る病

お勉強したことを忘れないように書き留めています。

bash は変数や配列に += 演算子で値が追加できる

ここのところ Cygwin 環境の再構築をしており,シェル周りについてもいろいろ調べ直しています。

今まで知らなかったのですが,bash で変数に値を連結したり,配列に値を追加したりするときに += 演算子が使えるそうです。 man page にもちゃんと書いてありました。

代入文でシェル変数や配列のインデックスに値を代入する場面では、 += 演算子を使って変数の直前の値に追加したり加算したりできます。 (中略) インデックスによる配列の場合は、新しい値が最大のインデックス より一つ大きいインデックスから配列に追加されます。

変数に値を連結する

これまで以下のように書いていたものが

$ var="foo"
$ var="$var bar"
$ echo $var
foo bar

こう書ける

$ var="foo"
$ var+=" bar"
$ echo $var
foo bar

配列に値を追加する

旧式の書き方

$ array=("foo" "bar")
$ array=(${array[@]} "baz")
$ echo ${array[@]}
foo bar baz

見やすくスッキリ

$ array=("foo" "bar")
$ array+=("baz")
$ echo ${array[@]}
foo bar baz

参考