Skip to content

Hashes in der Bash ...

Weil ich es gerade für einen Kollegen gebraucht habe.

Ein eher selten genutztes Feature in der Bash sind assoziative Arrays (Hashes). Ab Bash Version 4 geht das ganz ohne Hilfskonstrukte.

#!/bin/bash

declare -A dns=(
    [mond]=192.168.0.1
    [erde]=192.168.2.3
    [saturn]=192.168.7.8
)

echo "Alle Keys:   ${!dns[@]}"
echo "Alle Values: ${dns[@]}"
echo

for host in ${!dns[@]}; do
    ip=${dns[${host}]}
    echo "${host} hat die IP-Adresse ${ip}"
done


Schlüssel und Werte dürfen "natürlich" auch Leerzeichen enthalten. Dann müssen diese allerdings - wie bekannt - in Anführungszeichen stehen.

Ergebnis des Skriptes:

Alle Keys:   erde saturn mond
Alle Values: 192.168.2.3 192.168.7.8 192.168.0.1

erde hat die IP-Adresse 192.168.2.3
saturn hat die IP-Adresse 192.168.7.8
mond hat die IP-Adresse 192.168.0.1

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Jonny am :

*Und da soll nochmal einer sagen Perl wäre zu "kryptisch" :-)

Dirk Deimeke am :

*Perl ist ja viel schlimmer :-)

In bash kann man der Variable leider nicht ansehen, welchen Typ sie hat, deshalb muss man es explizit deklarieren ... Das Konstrukt mit dem "@" finde ich auch nicht so wahnsinnig gut gelungen.

Philipp am :

*Interessant, wobei ich durch den Titel etwas in die Irre geführt wurde. Bei dem Stichwort "Hashes" kamen mir eher Hashalgos wie MD5/CRC32 oder SHA-1 in den Sinn ^^. Nichts destotrotz ein lesenswerter Beitrag, danke!

Dirk Deimeke am :

*Gerne!

Assoziative Arrays werden leider auch Hashes genannt, daher vermutlich die Begriffsverwirrung.

Flo am :

*Genaugenommen heißen sie Hashtabellen oder halt Hashtables, denn mit Hash an sich könnte ja auch eine Hashfunktion gemeint sein. Besser man bleibt bei "Assoziative Arrays" da weiß man was man hat ;-)

Kommentar schreiben

Gravatar, Favatar, Pavatar, Identica, Twitter, MyBlogLog Autoren-Bilder werden unterstützt.
BBCode-Formatierung erlaubt
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
:'(  :-)  :-|  :-O  :-(  8-)  :-D  :-P  ;-) 
Formular-Optionen