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
Vous devez vous connecter pour publier un commentaire.
si vous avez bash 4.0 , vous pouvez utiliser les tableaux associatifs. autre chose que vous pouvez faire usage de
awk
s tableaux associatifsOriginalL'auteur ghostdog74
Voici une façon de le faire:
Voici un autre:
Et l'autre:
Par la voie, "capitol" est un bâtiment. Une ville est désignée comme un "capital".
OriginalL'auteur Dennis Williamson
Et votre hget fonction est mal. Essayez ceci:
Deuxième commande doit renvoyer la chaîne de hachage, mais il n'a rien retourné. Supprimer «#hash» chaîne à partir de votre fonction.
Aussi,
echo "$(hget capitols France)"
est ambiguë. Vous pouvez utiliserhget capitols France
à la place.OriginalL'auteur ZyX