Verständnis von assoziativen Arrays in Linux Bash mit Beispielen

Verständnis von assoziativen Arrays in Linux Bash mit Beispielen
Assoziative Arrays sind ein abstrakter Datentyp, der als Wörterbücher oder Karten angesehen werden kann. Wie sie sich von anderen Arrays unterscheiden, besteht. Associate Arrays haben zwei Haupteigenschaften:
  • Jeder Schlüssel im Array kann nur einmal erscheinen. Sie können es als eindeutige ID für einen Benutzer in einer Liste vorstellen.
  • Ein Wert kann mehr als einmal in einem Array erscheinen. Beispielsweise können zwei Personen in einer Liste denselben Namen haben, müssen jedoch unterschiedliche Benutzer -IDs haben.

In diesem Artikel werden wir erklären, wie Sie assoziative Arrays in Linux Bash deklarieren und initialisieren können. Mit Hilfe verschiedener Beispiele werden wir die Macht der assoziativen Arrays weiter näher erläutern.

Wir haben die in diesem Artikel erwähnten Beispiele zu einem Debian 10 Buster -System durchgeführt. Sie können sich jedoch leicht auf fast allen Linux -Distributen replizieren.

Überprüfung der Voraussetzungen

Für die Verwendung von assoziativen Arrays auf Linux Bash muss Ihre GNU -Bash -Version gleich oder höher als Version 4 sein. Öffnen Sie Ihr Linux -Terminal, indem Sie über die Anwendungsstarts -Suche darauf zugreifen. Geben Sie dann den folgenden Befehl ein, um Ihre installierte Version von Bash zu überprüfen:

$ bash -Verssion

Meine aktuelle Bash -Version ist 5.0.3 Ich kann losgehen. Falls Ihre Bash -Version weniger als 4 ist, können Sie BASH upgraden, indem Sie den folgenden Befehl als sudo ausführen:

$ sudo apt-get install-nur Upgrade-Bash

Deklarieren Sie ein assoziatives Array und initialisieren Sie es

Das Deklarieren eines assoziativen Arrays ist in Bash ziemlich einfach und kann durch den Befehl deklarieren:

$ Declare -A "ArrayName"

In unserem Beispiel werden wir eine Array -Variable mit dem Namen Samplearray1 wie folgt deklarieren:

$ Declare -a Samplearray11

Der nächste Schritt besteht darin, die erforderlichen Werte für Ihr Array zu initialisieren. In unserem Beispiel möchten wir ein Array haben, in dem Werte ein paar Ländernamen sind und die Schlüssel ihre relevanten Ländernamenabkürzungen sind. Hier füttern wir die Array -Werte nacheinander wie folgt:

$ ArrayName [Schlüssel] = Wert

Beispiel:

$ samplearray1 [chn] = China
$ samplearray1 [JPN] = Japan
$ samplearray1 [Kor] = Korea
$ samplearray1 [twn] = taiwan
$ samplearray1 [th] = thailand

Eine schnelle Alternative besteht darin, ein Array in einem einzigen Bash -Befehl wie folgt zu deklarieren und zu initialisieren:

$ declare -a arrayName = ([key1] = value1 [key2] = value2 [key3] = value3… . )

So können wir unser genanntes Array alternativ wie folgt deklarieren und initialisieren:

$ Declare -a Samplearray1 = ([CHN] = China [JPN] = Japan [Kor] = Korea [TWN] = Taiwan
[Th] = thailand)

Jetzt werden wir einige Beispiele präsentieren, die darauf eingehen, was Sie mit assoziativen Arrays in Bash machen können:

Beispiel1: Zugriff auf die Arrayschlüssel und -werte

In diesem Beispiel werden wir erklären, wie Sie können:

  • Drucken Sie einen Wert gegen einen Schlüssel
  • Drucken Sie alle Arrayschlüssel gleichzeitig aus
  • Drucken Sie alle Array -Werte gleichzeitig aus

Und,

  • Drucken Sie alle Schlüsselwertpaare gleichzeitig aus

Drucken

Du kannst Drucken Sie einen Wert gegen einen Schlüssel Durch die Verwendung der folgenden Befehlssyntax:

$ echo $ ArrayName [Keyname]

So können wir auf den vollständigen Namen eines Landes zugreifen, indem wir die Abkürzung des Landes aus unserem Stichprobenplare 1 angeben:

$ echo $ Samplearray1 [CHN]
$ echo $ samplearray1 [twn]

Wenn du interessiert bist Drucken Sie alle Schlüssel Von Ihrem assoziativen Array können Sie dies mit der folgenden Syntax tun:

$ für Key in "$ !ArrayName [@] "; docho $ key; fertig

Der folgende Befehl druckt alle Abkürzungen des Ländernamens aus meinem Stichprobenplare1 von

Verwenden einer für Schleife:

$ für Key in "$ !Samplearray1 [@] "; docho $ key; fertig

Eine weitere Alternative zum Drucken aller Schlüssel aus dem Array ist die Verwendung der Parameterausdehnung. Im folgenden Befehl werden alle Schlüssel in derselben Zeile gedruckt:

$ echo "$ !Samplearray1 [@] "

Wenn du interessiert bist Drucken Sie alle Array -Werte gleichzeitig, Sie können dies tun, indem Sie die für die Loop wie folgt verwenden:

$ für Val in "$ ArrayName [@]"; Echo $ val; Erledigt

Im folgenden Befehl werden alle in meinem Samplearray1 gespeicherten vollständigen Ländernamen drucken:

$ für Val in "$ Samplearray1 [@]"; Echo $ val; Erledigt

Eine weitere Alternative zum Drucken aller Werte aus dem Array ist die Verwendung der Parameterausdehnung. Im folgenden Befehl werden alle Werte in derselben Zeile gedruckt:

$ echo "$ Samplearray1 [@]"

Das nächste nützliche Beispiel wird Drucken Sie alle Schlüsselwertpaare aus Mit der für Schleife wie folgt sofort:

$ für Key in "$ !Samplearray1 [@] "; do echo" $ key ist eine Abkürzung für
$ Samplearray1 [$ key] ";

Sie können diese Informationen natürlich in Ihren komplexen und aussagekräftigen Bash -Skripten nützlicher machen.

Beispiel 2: Zählen von Array -Elementen

Der folgende Befehl kann verwendet werden, um die Anzahl der Elemente in Ihrem assoziativen Array zu zählen und zu drucken:

$ echo "$ #ArrayName [@]"

Die Ausgabe des folgenden Befehls zeigt, dass ich fünf Elemente in meinem Samplearray1 habe:

$ echo "$ #Samplearray1 [@]"

Beispiel 3: Hinzufügen neuer Daten in Array

Wenn Sie einem Array ein Element hinzufügen möchten, nachdem Sie es bereits deklariert und initialisiert haben, ist dies die Syntax, die Sie folgen können:

$ ArrayName+= ([Schlüssel] = Wert)

In meinem Beispiel möchte ich ein weiteres Land zusammen mit der Abkürzung des Bezirksnamens hinzufügen, damit ich den folgenden Befehl verwenden werde:

$ samplearray1+= ([al] = Alabama)

Die Anliegen der Array -Werte deutet jetzt darauf hin, dass das neue Land meinem Array hinzugefügt wird:

$ echo "$ Samplearray1 [@]"

Beispiel 4: Element aus Array löschen

Wenn Sie einen Eintrag aus dem assoziativen Array verunreinigen, können Sie ihn als Array -Element löschen. Dies ist die nicht festgelegte Syntax -Verwendung, um dies zu tun:

$ uneingestellter ArrayName [Schlüssel]

In meinem Beispiel möchte ich das Schlüsselwertpaar „Al-Alabama“ aus meinem Array entfernen, damit ich die Taste „Al“ in meinem Befehl verunreinigen werde:

$ uneingestellter Samplearray1 [Al]

Das Annehmen der Array-Werte deutet jetzt darauf hin, dass der Schlüsselwert von Al-Alabama jetzt aus meinem Array entfernt wird:

$ echo "$ Samplearray1 [@]"

Beispiel 5: Überprüfen Sie, ob im Array ein Element vorhanden ist

Durch die Verwendung der IF -Bedingung folgendermaßen können Sie überprüfen, ob in Ihrem assoziativen Array oder jetzt ein Element verfügbar ist:

$ if [$ ArrayName [SearchKey]+_]; dann existiert das Echo; sonst echo "nicht verfügbar"; fi

Wenn ich beispielsweise überprüfe, ob das kürzlich gelöschte Al-Alabama-Element in meinem Array vorhanden ist, wird die folgende Nachricht gedruckt:

$ if [$ Samplearray1 [al]+_]; dann existiert das Echo; sonst echo "nicht verfügbar"; fi

Wenn ich nach einem vorhandenen Artikel prüfe, wird das folgende Ergebnis gedruckt:

$ if [$ Samplearray1 [jpn]+_]; dann existiert das Echo; sonst echo "nicht verfügbar"; fi

Beispiel 6: Löschen eines Arrays

Sie können ein assoziatives Array aus Ihrem Bash -Speicher löschen, indem Sie den Befehl nicht festlegen, wie folgt:

$ uneingestellter ArrayName

Durch die Verwendung des folgenden einfachen Befehls werde ich meinen Samplearray1 aus dem Speicher löschen:

$ uneingestellter Samplearray1

Wenn ich jetzt versuche, alle Array -Werte durch den folgenden Befehl zu drucken, bekomme ich keine.

$ echo "$ Samplearray1 [@]"

Durch die Verwendung dieser Beispiele in Ihren Linux -Bash -Skripten können Sie die Leistung der assoziativen Arrays verwenden, um eine Lösung für viele komplexe Probleme zu erreichen.