Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

やりたいこと

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

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

sayama0402
Javascript(Riot.js / Vue / React / Nodejs) / PHP(Wordpress, cakePHP, Laravel) / Ruby(Ruby on Rails) / Python(Django) / SQL / Linux / Swift / Docker / AWS / Serverless
http://ken-sayama.hateblo.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした