Bash: de manière Correcte pour effectuer une Itération sur la Carte

En Bash, je peux créer un carte (hashtable) avec cette construction commune

hput() {
  eval "$1""$2"='$3'
}

hget() {
  eval echo '${'"$1$2"'#hash}'
}

et ensuite l'utiliser comme ceci:

hput capitals France Paris
hput capitals Spain Madrid
echo "$(hget capitals France)"

Mais comment puis-je mieux d'itérer sur les entrées dans la carte ?. Par exemple, en Java, je le ferais:

for (Map.Entry<String, String> entry : capitals.entrySet()) {
  System.out.println("Country " + entry.getKey() + " capital " + entry.getValue());
}

est a t-il un moyen d'accomplir quelque chose de similaire en Bash ?.

OriginalL'auteur Lars Tackmann | 2010-04-10