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:
Und,
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.