Linux
シェルスクリプト

シェルスクリプトで連想配列からキーとバリューを参照する

やりたいこと

bashのシェルスクリプトで連想配列を使って手間な作業を自動化しようとした時に、なかなか情報が見つからなかったので、メモしておく。
やりたいこととしては、連想配列を用意して、ループさせた時に、キーとバリューを参照してくるということ

Mac用の手順です

インストール

mac の場合はデフォルトのbashがver 3系なので、brew 経由でインストールを行う

// インストール
$ brew install bash

// bashが切り替わっているか確認
$ which bash
// 上記で/usr/local/bin/bashが返って来ればOK

スクリプトを書く

Vimでシェルスクリプトを書く

$ vi script.sh

script.sh

#!/usr/local/bin/bash

# bashで連想配列を使えるようにする宣言$
# declare -A 配列名;
declare -A AREAS;

AREAS=(
  ["aichi"]="愛知県"
  ["akita"]="秋田県"
  ["aomori"]="青森県"
  ["chiba"]="千葉県"
  ["ehime"]="愛媛県"
  ["fukui"]="福井県"
  ["fukuoka"]="福岡県"
  ["fukushima"]="福島県"
  ["gifu"]="岐阜県"
  ["gunma"]="群馬県"
  ["hiroshima"]="広島県"
  ["hokkaido"]="北海道"
  ["hyogo"]="兵庫県"
  ["ibaraki"]="茨城県"
  ["ishikawa"]="石川県"
  ["iwate"]="岩手県"
  ["kagawa"]="香川県"
  ["kagoshima"]="鹿児島県"
  ["kanagawa"]="神奈川県"
  ["kochi"]="高知県"
  ["kumamoto"]="熊本県"
  ["kyoto"]="京都府"
  ["mie"]="三重県"
  ["miyagi"]="宮城県"
  ["miyazaki"]="宮崎県"
  ["nagano"]="長野県"
  ["nagasaki"]="長崎県"
  ["nara"]="奈良県"
  ["niigata"]="新潟県"
  ["oita"]="大分県"
  ["okayama"]="岡山県"
  ["okinawa"]="沖縄県"
  ["osaka"]="大阪府"
  ["saga"]="佐賀県"
  ["saitama"]="埼玉県"
  ["shiga"]="滋賀県"
  ["shimane"]="島根県"
  ["shizuoka"]="静岡県"
  ["tochigi"]="栃木県"
  ["tokushima"]="徳島県"
  ["tokyo"]="東京都"
  ["tottori"]="鳥取県"
  ["toyama"]="富山県"
  ["wakayama"]="和歌山県"
  ["yamagata"]="山形県"
  ["yamaguchi"]="山口県"
  ["yamanashi"]="山梨県"
)

# 連想配列のループ
for AREA in ${!AREAS[@]};
do
    # $AREAでキーが取得できる。
    # 上記のtokyoやtottoriなど
    echo $AREA

    # ${AREAS[$AREA]}でバリューが取得できる
    # 上記の東京や鳥取など
    echo ${AREAS[$AREA]}
done

シェルスクリプトで連想配列を扱う方法は以上です。