bash 配列 メモ
bashにおいても一般的なプログラミング言語同様に配列が使用できる
配列へ値を代入するには( )内に要素を並べる(複合代入)
# 空の配列を作成 $ list=() # 複合代入で作成 $ fruits=(apple grape orange peach)
明示的に配列と宣言するときはdeclare -aを使う
$ declare -a array
${配列名[インデックス]}で要素の参照が出来る
$ fruits=(apple grape orange peach)
$ echo ${fruits[0]}
apple
$ echo ${fruits[2]}
orange既存の配列の内容を変更するには配列名[インデックス]=値で変更できる
$ fruits=(apple grape orange peach)
$ fruits[1]=banana
$ echo ${fruits[1]}
banana配列の要素数を取得するには${#配列名[@]}とする。また、全ての要素を取得するにはインデックスに*または@を指定する
$ fruits=(apple grape orange peach)
$ echo ${#fruits[@]}
4
$ echo ${fruits[@]}
apple grape orange peach" "で囲むと展開される
"${配列名[@]}"の場合は各要素が個々の文字列として展開されるため配列のコピーなどに使える
"${配列名[*]}"の場合はスペースで連結した1つの文字列として展開される
要素の追加には前述の"${配列名[@]}"を用いる。末尾に追加する場合には+=でも可能
$ foods=(egg fish "${fruits[@]}")
$ echo ${foods[@]}
egg fish apple grape orange peach
$ foods+=(tofu)
$ echo ${foods[@]}
egg fish apple grape orange peach tofu要素の削除にはunsetコマンドを使う。削除された箇所は未設定となる
unset fruits[2]
$ echo ${fruits[@]}
apple grape peach値の存在するインデックスを取得するには配列名の前に!をつける
$ countries=([0]=Japan [2]=Franch [3]=Germany)
$ echo ${!countries[@]}
0 2 3