Bashシェルで連想配列を使う
シェルを使ってみている今日この頃. 連想配列はシェルでは無理だろうと思っていたが, シェルならではの方法で実現できることがわかった.
#!/usr/bin/env bash MAP_key1="value1" MAP_key2="value2" MAP_key3="value3" for key in key1 key2 key3; do val=$(eval 'echo $MAP_'$key) echo "$key => $val" done
とする. ここでMAPは自分の好きな連想配列の名前にすれば良い.
key1 => value1 key2 => value2 key3 => value3
のような出力が得られる. 実際にはただMAP_key1のような変数を定義しているだけだが, evalを使って名前を結合することでMAP[key1]="value1"とするのと同等の結果が得られる.
なるほどシェルも奥が深いのだなと思った.