配列の作成・参照・追加・変更・削除 | Linuxシェルスクリプト

配列の作成・参照・追加・変更・削除 | Linuxシェルスクリプト

シェルスクリプトの書き方についてのメモ。
今回は文字列と変数の結合の仕方について。

ポイント
配列定義時は小カッコで括り、要素はスペースで区切る
配列の全要素参照は『${配列名[@]}』
削除時はunsetコマンドを使う。unsetの引数の変数には「$」をつけない。

以下、arrという配列変数を操作していく。

配列の作成

×ただスペース区切りで定義しようとしてもダメ
$ arr=aaa bbb ccc
-bash: bbb: command not found

〇右辺を小カッコで括ると配列を定義できる
$ arr=(aaa bbb ccc)

配列の参照

・「$変数名」で参照すると先頭の要素が参照される
$ echo $arr
aaa

〇「${配列名[@]}」で参照すると全要素が取得できる
$ echo ${arr[@]}
aaa bbb ccc

×中括弧を付け忘れると参照できないので注意。
$ echo $arr[@]
aaa[@]

配列の要素変更(追加・変更・削除)

〇4つ目の要素に「ddd」を追加(大かっこ[]の中身はインデックス番号。インデックス番号は0始まりなので「3」の場合は4つ目を意味する)
$ arr[3]=ddd
$ echo ${arr[@]}
aaa bbb ccc ddd

〇既に値の入っている3番目の要素(インデックスは2)を変更する。cccがeeeに変わったことが分かる
$ arr[2]=eee
$ echo ${arr[@]}
aaa bbb eee ddd

〇要素の追加は以下の方法でも可能「+=」を使う。こちらの方がインデックス番号を意識しなくてよいので分かりやすい。
$ arr+=(ggg)
$ echo ${arr[@]}
aaa bbb eee ddd ggg

×要素の追加をするときに小カッコを忘れてしまうと以下のように先頭の要素への文字列結合となる。
$ arr+=fff
$ echo ${arr[@]}
aaafff bbb eee ddd ggg

〇要素の削除。unsetを使う。unsetに続く変数には「$」を付けない。
$ unset arr[1]
$ echo ${arr[@]}
aaafff eee ddd ggg

×「$」を付けてしまうと、削除できない。
$ unset ${arr[1]}
$ echo ${arr[@]}
aaafff eee ddd ggg