Verwendung von assoziativen Arrays

Bash:
Verwendung von assoziativen Arrays

Wie:

Zuerst deklarieren Sie ein assoziatives Array in Bash:

declare -A my_array

Dann können Sie beginnen, es mit Werten zu füllen, indem Sie Strings als Schlüssel verwenden:

my_array["name"]="Linux Journal"
my_array["topic"]="Programmierung"

Um auf ein Element zuzugreifen, verwenden Sie dessen Schlüssel:

echo ${my_array["name"]}  # Gibt aus: Linux Journal

Das Iterieren über Schlüssel und Werte ist ebenfalls unkompliziert:

for key in "${!my_array[@]}"; do
    echo "$key: ${my_array[$key]}"
done

Eine Beispiel-Ausgabe könnte so aussehen:

name: Linux Journal
topic: Programmierung

Um Elemente hinzuzufügen oder zu modifizieren, weisen Sie einfach einem Schlüssel einen Wert zu, ähnlich wie bei der anfänglichen Befüllung:

my_array["Leser"]="Ihr"

Und um ein Element zu entfernen, verwenden Sie unset:

unset my_array["Thema"]

Tiefergehende Betrachtung

Assoziative Arrays wurden in Bash-Version 4.0 eingeführt und sind somit eine relativ neue Ergänzung der Sprache. Vor ihrer Einführung war das Handhaben von Arrays mit Nicht-Ganzzahlen-Indizes umständlich, oft waren Umwege oder externe Werkzeuge wie awk oder sed erforderlich.

Unter der Haube implementiert Bash assoziative Arrays mit Hash-Tabellen. Diese Implementierung erlaubt eine effiziente Schlüsselsuche, die unabhängig von der Größe des Arrays ziemlich konstant bleibt, ein kritisches Merkmal für die Leistung bei der Skriptausführung.

Während assoziative Arrays in Bash viel Macht und Flexibilität für das Shell-Skripting bringen, kommen sie mit ihrem eigenen Satz von Einschränkungen, wie zum Beispiel etwas umständlicher zu sein im Vergleich mit Arrays in höheren Sprachen wie Python oder JavaScript. Für komplexe Datenmanipulationsaufgaben könnte es immer noch erwägenswert sein, externe Werkzeuge oder Sprachen zu betrachten, die besser für den Job geeignet sind.

Jedoch bieten assoziative Arrays für viele typische Skripting-Aufgaben ein wertvolles Werkzeug im Toolkit des Bash-Programmierers, indem sie lesbarere und wartbarere Skripte ermöglichen, da sie die Verwendung von bedeutungsvollen String-Schlüsseln anstelle von numerischen Indizes erlauben.