Login
Newsletter
Werbung

Do, 7. Dezember 2017, 15:00

Shellskripte mit Aha-Effekt: Bash-Arrays

Assoziative Arrays

Assoziative Arrays gibt es in der Bash ab Version 4. Ein assoziatives Array kann man sich als Verknüpfung von zwei Arrays vorstellen, wobei eines die Daten enthält und das andere die Schlüssel, welche die einzelnen Elemente des Datenarrays indizieren. Assoziative Arrays müssen explizit deklariert werden. Die Anweisung declare -A ARRAY deklariert ein assoziatives Array namens »ARRAY«. Dies ist die einzige Möglichkeit, assoziative Arrays zu erstellen.

Die Zuweisung eines Wertes erfolgt genauso wie bei den indizierten Array, nur dass hier kein Skalar als Index verwendet wird, sondern eine Zeichenkette (Key). Zum Beispiel:

declare -A namen
namen[Donald]=Duck
namen[Daniel]=Düsentrieb
namen[Gustav]=Gans

Im Key dürfen auch Leerzeichen oder andere »exotische« Zeichen auftauchen. Dann muss der Key aber in Anführungszeichen gesetzt werden, beispielsweise:

namen["Onkel Dagobert"]=Duck

Elemente des Index können Leerzeichen sogar am Anfang oder Ende des Strings enthalten. Indexelemente, die nur aus Leerzeichen bestehen, sind jedoch nicht zulässig.

Ähnlich wie bei Perl oder PHP lassen sich auch mehrere Elemente in einem Rutsch definieren:

declare -A namen
namen=(
  [Donald]=Duck
  [Daniel]=Düsentrieb
  [Gustav]=Gans
  )

Auch beim Zugriff auf den Inhalt assoziativer Array verfährt man wie schon bei den indizierten Arrays. Dabei sei nochmals darauf hingewiesen, dass die Reihenfolge, in der die Elemente ich Array gespeichert werden, nicht durch die Reihenfolge der Eintragung festgelegt ist. Um an den Inhalt eines Hashes zu gelangen, wird der Key angegeben:

echo namen[Donald]

Anstelle eines konstanten Keys kann natürlich auch eine Shell-Variable verwendet werden, zum Beispiel:

01: Key=Gustav
02: echo ${namen[$Key]}

Ist die Variable »Key« nicht definiert, liefert die Bash die Fehlermeldung »bad subscript«. Sie müssen also darauf achten, dass alle Variablen, die Sie als Index verwenden, auch definiert sind.

Kommentare (Insgesamt: 5 || Alle anzeigen )
Re: Bash-Arrays als Argumentenliste (HP, Mi, 20. Dezember 2017)
Re: Bash-Arrays als Argumentenliste (bash user, Do, 14. Dezember 2017)
Löschen von Array Elementen (Nemo, Mo, 11. Dezember 2017)
bashisms :D (bashisms :D, Fr, 8. Dezember 2017)
Bash-Arrays als Argumentenliste (Rudi123, Do, 7. Dezember 2017)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung