Assoziatives Array in Bash

Assoziatives Array in Bash

Eine Array -Variable wird verwendet, um mehrere Daten mit Index zu speichern, und der Wert jedes Array -Elements wird durch den entsprechenden Indexwert dieses Elements zugegriffen. Das Array, das den Stringwert als Index oder Schlüssel speichern kann, wird als assoziatives Array bezeichnet. Ein assoziatives Array kann in Bash -Skript wie anderen Programmiersprachen deklariert und verwendet werden. Diese Funktion wird in Bash 4 hinzugefügt. Wie assoziatives Array in Bash deklariert und zugegriffen werden kann, werden in diesem Tutorial erläutert.

Überprüfen Sie die aktuelle Version von Bash, bevor Sie den nächsten Teil dieses Tutorials beginnen. Führen Sie den folgenden Befehl vom Terminal aus, um die installierte Version von Bash zu überprüfen. Wenn die installierte Bash -Version in Ihrem Betriebssystem weniger als 4 ist, müssen Sie zuerst die Bash -Version 4 installieren, um dieses Tutorial fortzusetzen.

$ bash -Verssion

Die folgende Ausgabe zeigt, dass die aktuelle Version von Bash 4 ist.4.19.

Deklarieren und Initialisieren von assoziativem Array:

Ein assoziatives Array kann in Bash mit der Verwendung des Bash deklariert werden erklären Schlüsselwort und die Array -Elemente können zum Zeitpunkt der Array -Deklaration oder nach der Erklärung der Array -Variablen initialisiert werden. Das folgende Skript erstellt ein assoziatives Array mit dem Namen Assarray1 und die vier Arraywerte werden einzeln initialisiert.

$ Declare -a assarray1
$ assarray1 [Frucht] = Mango
$ assarray1 [Bird] = Cockatail
$ assarray1 [Blume] = Rose
$ assarray1 [Tier] = Tiger

Ausgang

Das folgende Skript initialisiert das assoziative Array, Assarrat2 Zum Zeitpunkt der Array -Erklärung. Hier werden zum Zeitpunkt der Array -Deklaration drei Array -Werte mit Schlüsseln definiert.

$ declare -a assarray2 = ([hdd] = samsung [monitor] = dell [keyboard] = a4tech)

Ausgang:

Zugriff auf das assoziative Array:

Array -Elemente eines assoziativen Arrays können einzeln oder mit jeder Schleife zugegriffen werden. Diese beiden Möglichkeiten werden in diesem Teil des Tutorials gezeigt. Arrayschlüssel und Werte können separat und zusammen gedruckt werden.

Die folgenden Befehle drucken zwei Werte des Arrays, Assarray1 (zuvor deklariert) durch Angabe des Schlüsselwerts.

$ echo $ assarray1 [Bird]
$ echo $ assarray1 [flower]

Ausgang:

Nach dem Ausführen der obigen Befehle wird die folgende Ausgabe angezeigt.

Manchmal ist es erforderlich, alle Schlüssel oder Werte des Arrays zu drucken. Alle Schlüssel eines Arrays können mithilfe der Expansion der Loop- oder Bash -Parameterausdehnung gedruckt werden. Im folgenden ersten Befehl werden alle Tasten des Arrays in jeder Zeile für die Schleife verwendet. Der zweite Befehl druckt alle Array -Tasten in einer Zeile mithilfe der Bash -Parameter -Erweiterung aus. Hier, '!'Symbol wird zum Lesen der Schlüssel des assoziativen Arrays verwendet.

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

Ausgang:

Nach dem Ausführen der obigen Befehle wird die folgende Ausgabe angezeigt.

Alle Werte eines Arrays können mithilfe der Loop- oder Bash -Parameterausdehnung gedruckt werden. Im folgenden ersten Befehl werden alle Werte des Arrays in jeder Zeile für die Schleife verwendet. Der zweite Befehl wird alle Array -Werte in einer Zeile unter Verwendung der Bash -Parameterweiterung drucken.

$ für val in "$ assarray1 [@]"; Echo $ val; Erledigt
$ echo "$ assarray1 [@]"

Ausgang:

Nach dem Ausführen der obigen Befehle wird die folgende Ausgabe angezeigt.

Sowohl Schlüssel als auch Werte eines assoziativen Arrays können durch Verwendung für die Schleife gedruckt werden. Das folgende Skript wird alle Werte mit Tasten des benannten assoziativen Arrays ausdrucken Assarray1. Hier wird jeder Schlüssel des Arrays in jedem Schritt der für die Loop analysiert und der Schlüssel wird als Index des Arrays verwendet, um den Wert des entsprechenden Schlüssels zu lesen.

$ für Key in "$ !Assarray1 [@] "; do echo" $ key => $ assarray1 [$ key] ";

Ausgang:

Die folgende Ausgabe wird nach dem Ausführen des Skripts angezeigt.

Hinzufügen neuer Daten im assoziativen Array:

Ein neues Array -Element kann nach der Erklärung und Initialisierung des Arrays leicht im assoziativen Array hinzugefügt werden. Die folgenden Befehle überprüfen die aktuellen Array -Werte des Arrays, Assarray2, Fügen Sie einen neuen Wert hinzu "Logitech"Mit dem Schlüssel", "MausUnd überprüfen Sie erneut die aktuellen Elemente des Arrays.

$ echo "$ assarray2 [@]"
$ assarray2+= ([Maus] = logitech)
$ echo "$ assarray2 [@]"

Ausgang:

Nach dem Ausführen der Befehle wird die folgende Ausgabe angezeigt.

Daten aus assoziativem Array löschen:

Jeder Elementwert des assoziativen Arrays kann basierend auf dem Schlüsselwert entfernt werden. Der Befehl „Uneingestellter“ wird verwendet, um den jeweiligen Wert des assoziativen Arrays zu löschen. Die folgenden Befehle werden verwendet, um den aktuellen Wert des Arrays mit dem Schlüssel zu überprüfen. “Monitor”, Löschen Sie den Wert mit dem Befehl uneingestellter und führen Sie den Befehl 'echo' erneut aus, um zu überprüfen, ob der Wert gelöscht wird oder nicht. $ echo $ assarray2 [Monitor]

$ uneingestellter Assarray2 [Monitor]
$ echo $ assarray2 [Monitor]

Ausgang:

Nach dem Ausführen der Befehle wird die folgende Ausgabe angezeigt.

Fehlende Index aus assoziativem Array finden:

Fehlender Index oder Schlüssel eines Arrays kann mit einer bedingten Anweisung gefunden werden. Das folgende Skript überprüft die Array -Taste “,“Monitor" existiert oder nicht. Der Wert dieses Schlüssels wird im vorherigen Beispiel beseitigt. Die Bedingung "If" gibt also eine falsche und "nicht gefundene" Nachricht zurück, wird gedruckt.

$ if [$ assarray2 [monitor]+_]; dann echo "gefunden"; sonst echo "nicht gefunden"; fi

Ausgang:

Die folgende Ausgabe wird nach dem Ausführen des Skripts angezeigt.

Entfernen von assoziativem Array:

Jedes assoziatives Array kann mit dem Befehl "Uneingestellter" entfernt werden. Im folgenden ersten Befehl werden alle Werte des genannten Arrays gedruckt Assarray1 in einer einzigen Linie, wenn das Array existiert. Der zweite Befehl entfernt das Array. Der dritte Befehl wird verwendet, um das Array zu überprüfen oder zu entfernen. Wenn das Array entfernt wird, wird kein Ausgang angezeigt.

$ echo "$ assarray1 [@]"
$ uneingestellter Assarray1
$ echo "$ assarray1 [@]"

Ausgang:

Nach dem Ausführen der Befehle wird die folgende Ausgabe angezeigt.

Abschluss

Wenn es erforderlich ist, mehrere Daten von Schlüsselwertpaaren in Bash zu speichern, ist es besser, das assoziative Array zum Speichern der Daten zu verwenden. Wie der Codierer das assoziative Array deklarieren und initialisieren kann, Arrayschlüssel oder Werte analysieren, Array -Elemente hinzufügen und löschen und das Array entfernen, werden in diesem Tutorial mithilfe verschiedener Skripte angezeigt. Hoffnung, der Leser kann nach dem Lesen dieses Tutorials assoziatives Array in Bash ordnungsgemäß verwenden.