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