クマの手も借りたい
茶トラネコ(@kumanotemo)です。上場を控えたITベンチャーを2社も退職してフリーランスの道を選んだ放浪エンジニアです。
シェル

シェルで連想配列の変数を使う方法

シェルスクリプトでも連想配列が扱えるようになって、幅が広がったような気がします。

これなら、PHP などの言語しか経験がない人でも、それほど抵抗なくシェルの世界に入れるのではないでしょうか。

連想配列は宣言が必要

以前、整数や配列の変数は明示的に宣言ができるというお話をしましたが、連想配列の場合は明示的に宣言するのが必須となります。

あわせて読みたい
シェルで整数型の変数を使って計算処理をする方法シェルでは明示的に整数型の変数が宣言できます。 これまでループのカウントや計算などは expr コマンドを利用していたのですが、明...
あわせて読みたい
シェルで配列の変数を使ってループ処理する方法これまで、シェルで配列を扱う機会はほとんどなかったのですが、最近のシェルでは連想配列が使えるようになったということで、配列を理解しておく...

連想配列の場合は、declare -A を使います。

#!/bin/sh

declare -A horse                                                                                                                     

horse=([color]=kurige [name]=SilenceSuzuka)

連想配列の値の参照

値を参照するには変数にキーを指定するだけです。

echo "${horse[name]}は${horse[color]}です。"

英語だとわかりにくいかもしれませんが結果は以下のようになります。

SilenceSuzukaはkurigeです

日本語にします。

horse=([color]=栗毛 [name]=サイレンススズカ)

サイレンススズカは栗毛です。

連想配列の要素の追加

連想配列に要素を追加してみます。

#!/bin/sh

declare -A horse

horse=([color]=栗毛 [name]=サイレンススズカ)

horse[type]=快速馬

echo "${horse[name]}は${horse[color]}の${horse[type]}です。"

実行すると以下の結果となります。

サイレンススズカは栗毛の快速馬です。

なお、要素の削除は unset を使います。

unset(horse[type])

連想配列のキー一覧と値一覧

連想配列のキー一覧の参照の方法です。PHP だと array_keys() のようなものですね。

#!/bin/sh

declare -A horse

horse=([color]=栗毛 [name]=サイレンススズカ [type]=快速馬)

echo ${!horse[@]}

変数の前に「!」を定義するのですが、結果は半角スペース区切りとなります。

name color type

値の一覧は「!」がないものになります。

echo ${horse[@]}

サイレンススズカ 栗毛 快速馬
やさしいKotlin入門

プログラミング初心者または Kotlin 初心者向けの入門本。Android 開発ではなく Kotlin の言語を覚えてみたい方にオススメの入門本です。

Java と比較して説明される書籍が多い中、Java や他のプログラム言語を知らない人向けになるので、例えば Java はあまり詳しくないけど PHP や Python は書けるといったパターンとも相性がいいですよ。

あなたにオススメ