シェルスクリプトでも連想配列が扱えるようになって、幅が広がったような気がします。
これなら、PHP などの言語しか経験がない人でも、それほど抵抗なくシェルの世界に入れるのではないでしょうか。
連想配列は宣言が必要
以前、整数や配列の変数は明示的に宣言ができるというお話をしましたが、連想配列の場合は明示的に宣言するのが必須となります。

シェルで整数型の変数を使って計算処理をする方法シェルでは明示的に整数型の変数が宣言できます。
これまでループのカウントや計算などは expr コマンドを利用していたのですが、明示的...

シェルで配列の変数を使ってループ処理する方法これまで、シェルで配列を扱う機会はほとんどなかったのですが、最近のシェルでは連想配列が使えるようになったということで、配列を理解しておく...
連想配列の場合は、declare -A を使います。
1 2 3 4 5 | #!/bin/sh declare -A horse horse=([color]=kurige [name]=SilenceSuzuka) |
連想配列の値の参照
値を参照するには変数にキーを指定するだけです。
1 | echo "${horse[name]}は${horse[color]}です。" |
英語だとわかりにくいかもしれませんが結果は以下のようになります。
1 | SilenceSuzukaはkurigeです |
日本語にします。
1 2 3 | horse=([color]=栗毛 [name]=サイレンススズカ) サイレンススズカは栗毛です。 |
連想配列の要素の追加
連想配列に要素を追加してみます。
1 2 3 4 5 6 7 | #!/bin/sh declare -A horse horse=([color]=栗毛 [name]=サイレンススズカ) horse[type]=快速馬 echo "${horse[name]}は${horse[color]}の${horse[type]}です。" |
実行すると以下の結果となります。
1 | サイレンススズカは栗毛の快速馬です。 |
なお、要素の削除は unset を使います。
1 | unset(horse[type]) |
連想配列のキー一覧と値一覧
連想配列のキー一覧の参照の方法です。PHP だと array_keys() のようなものですね。
1 2 3 4 5 6 | #!/bin/sh declare -A horse horse=([color]=栗毛 [name]=サイレンススズカ [type]=快速馬) echo ${!horse[@]} |
変数の前に「!」を定義するのですが、結果は半角スペース区切りとなります。
1 | name color type |
値の一覧は「!」がないものになります。
1 2 3 | echo ${horse[@]} サイレンススズカ 栗毛 快速馬 |