bashでハッシュ(連想配列的な意味で)

bash 4.*でハッシュ(連想配列)が使えるようになったので使ってみました。
標準だとbash 3.*系のディストリビューション*1が多いと思うので、使う機会はまだ少ないかもしれません。

#!/bin/bash

declare -A capital                # -Aでハッシュ宣言 
capital["Japan"]="Tokyo"
capital["France"]="Paris"
capital["Italy"]="Roma"

for idx in Japan France Italy; do
  echo ${capital[$idx]}                  # Tokyo Paris Roma
done  

一括代入する場合は、以下のような感じです。

declare -A capital
capital=(["Japan"]="Tokyo" ["France"]="Pris" ["Italy"]="Roma")

bash 3.*系でハッシュ的な配列を使うには、evalを使う必要があります。
evalでも問題ないのですが、直感的に分かりにくいコードのような気がします。

#!/bin/bash

capital_jp="Tokyo"
capital_fr="Paris"
capital_it="Roma"

for idx in jp fr it; do
   eval echo \$capital_${idx}        # Tokyo Paris Roma
done


Bash - GNU Project - Free Software Foundation

*1:RHEL 5.4は、まだbash3.*でした。