GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Assoziatives Array in Bash

Jeder Programmierer weiß, wie wichtig Variablen sind. Variablen fungieren als Zwischenstationen für Codierer/Programmierer, an denen sie Informationen hin und her übertragen. Variablen sind im Allgemeinen beim Rechnen von entscheidender Bedeutung, da sie einen dynamischen Code ermöglichen. Mit anderen Worten werden Variablen als Informationsplatzhalter bezeichnet, die sich je nach Verwendung immer wieder ändern. Ein erhebliches Problem, das die meisten Programmierer und Programmierer betrifft, ist jedoch, viele Variablen in einem Projekt zu verfolgen.

Dies neigt dazu, für die meisten Programmierer auf diesem Gebiet ein Ärgernis zu sein. Es gibt eine ultimative Lösung für dieses Problem, nämlich Arrays. Ein Array in der Programmierung ist als Datenstruktur bekannt, die Elemente mit demselben Datentyp speichert. Arrays sind ideal für die Speicherung einer Sammlung von Daten. Arrays sind für fast alle Programmiersprachen von großer Bedeutung, nicht zu vergessen Skriptsprachen wie Bash. Dieser Artikel konzentriert sich mehr auf assoziative Arrays in Bash.

Es ist bekannt, dass Shell-Skriptsprachen Benutzern die Möglichkeit bieten, indizierte Arrays zu erstellen, abzufragen, zu aktualisieren und zu manipulieren. Lassen Sie sich nicht von dem Begriff indizierte Arrays verwirren, da es sich um eine Liste von Elementen handelt, denen eine Zahl vorangestellt ist. Die Liste plus die zugewiesene Nummer wird in eine Variable verpackt, was es einfach macht, Ihren Code zu präsentieren.

Assoziatives Array in Bash

Die Bash-Skriptsprache hat einen zusätzlichen Vorteil, da sie assoziative Arrays erstellen kann und die Arrays wie ein normales Array behandelt. Die Hauptfunktion eines assoziativen Arrays ermöglicht es dem Benutzer, Listen zu entwickeln, die Schlüssel/Indizes und Werte enthalten, anstatt nur nummerierte Werte. Die Funktion assoziativer Arrays wurde in Bash 4 aufgenommen, was bedeutet, dass wir uns, bevor wir beginnen, die aktuelle Version von Bash mit der folgenden Befehlszeile ansehen werden:

bash --version

Ausgabe

Wenn Ihre Bash-Version nicht Version 4 oder höher ist, müssen Sie sie aktualisieren, damit sie funktioniert. Machen Sie sich keine Sorgen, da die erforderlichen Schritte einfach sind. Bash kann auf einem Ubuntu-Server mit dem berühmten apt-get-Befehl aktualisiert werden. Einige Benutzer müssen möglicherweise ihre Bash aktualisieren. Öffnen Sie dazu Ihr Terminal und führen Sie die folgenden Befehle aus:

sudo apt-get install --only-upgrade Bash

Der Befehl aktualisiert die Bash-Shell auf die neueste Version Ihres Ubuntu-Betriebssystems. Um sicherzustellen, dass das Update erfolgreich war, führen Sie den obigen Befehl aus, um die installierte/aktualisierte Version der Bash-Shell (Bash –version) zu überprüfen. Dieser Befehl druckt eine Konsole mit der aktuellen Bash-Shell-Version auf Ihrem Ubuntu-Server.
Wenn Sie Bash in einigen Fällen nicht auf Ihrem Ubuntu-Server installiert haben, machen Sie sich keine Sorgen. Führen Sie die folgenden Befehle aus, um Bash zu installieren:

sudo apt update
sudo apt install bash

Deklaration und Initialisierung eines assoziativen Arrays

In Bash kann ein assoziatives Array mit dem Schlüsselwort „declare“ deklariert werden. Array-Elemente hingegen können während einer Array-Deklaration oder nach einer Variablendeklaration initialisiert werden. Das folgende Skript erstellt ein Array namens assArray1, und die anderen vier Array-Werte werden einzeln wie angegeben initialisiert

declare -A assArray1
assArray1[fruit]=Mango
assArray1[bird]=Cockatail
assArray1[flower]=Rose
assArray1[animal]=Tiger

Ausgabe

Während der Array-Deklaration initialisiert das folgende Skript namens assArray2 ein assoziatives Array. Zum Zeitpunkt der Deklaration werden drei Array-Werte mit Schlüsseln definiert.

declare -A assArray2=( [HDD]=Samsung [Monitor]=Dell [Keyboard]=A4Tech )

Ausgabe

Zugriff auf das assoziative Array

Es gibt zwei Formen, mit denen ein Benutzer auf ein assoziatives Array zugreifen kann. Erstens kann auf sie einzeln zugegriffen werden, und zweitens kann auf sie über eine Schleife zugegriffen werden. Machen Sie sich keine Sorgen über die oben genannten Möglichkeiten, da sie im Tutorial behandelt werden. Bitte beachten Sie, dass Schlüssel und Werte eines Arrays entweder zusammen oder getrennt gedruckt werden können. Durch Angabe des Schlüsselwerts gibt die folgende Befehlszeile zwei Array-Werte aus. Wir werden asArray1 zur Veranschaulichung verwenden.

echo ${assArray1[bird]}
echo ${assArray1[flower]}

Ausgabe

Nachdem Sie die oben hervorgehobenen Befehlszeilen ausgeführt haben, sehen Sie einen ähnlichen Bildschirm wie den folgenden.

Beim Drucken müssen Sie manchmal alle Schlüssel und Werte eines Arrays ausdrucken. Dies kann mit einer Bash-Perimetererweiterung oder einer Schleife erfolgen. Lassen Sie uns zunächst einen Blick auf das Drucken mit einer Schleife werfen. Wenn Sie schon einmal einen Programmierkurs besucht haben, ist Ihnen dieser Begriff sicher schon öfter begegnet. Führen Sie den folgenden Befehl aus, um alle Schlüssel und Werte eines Arrays auszudrucken.

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

Ausgabe

Der folgende Befehl verwendet die Bash-Parametererweiterung, um alle Schlüssel und Werte eines Arrays auszugeben

echo "${!assArray1[@]}"

Ausgabe

Hinweis:Das Symbol „!“ in beiden Befehlen wird verwendet, um die Schlüssel des assoziativen Arrays zu lesen.

Daher haben wir gesehen, dass alle Array-Werte entweder mit einer Bash-Parametererweiterung oder einer Schleife gedruckt werden können. Nachfolgend finden Sie ein weiteres Beispiel, um die Verwendung der beiden Methoden zu erläutern. Der erste Befehl gibt die Array-Werte mithilfe einer Schleife aus, während der zweite Befehl die Array-Werte mithilfe einer Bash-Parametererweiterung ausgibt.

for val in "${assArray1[@]}"; do echo $val; done

Ausgabe

echo "${assArray1[@]}"

Ausgabe

Hinweis:Die Schleifenmethode kann verwendet werden, um sowohl Schlüssel als auch Werte eines assoziativen Arrays zu drucken. Zur Veranschaulichung verwenden wir unser erstes Array asArray1. Bei dieser Methode muss jeder Array-Schlüssel in jedem Schritt der Schleife analysiert werden. Der verwendete Schlüssel wird dann als Array-Index verwendet, der beim Lesen der entsprechenden Schlüsselwerte hilft.
Führen Sie die folgende Befehlszeile aus

for key in "${!assArray1[@]}"; do echo "$key => ${assArray1[$key]}"; done

Ausgabe

Wie man Daten zu einem assoziativen Array hinzufügt

Nach der Deklaration und Initialisierung des Arrays ist das Hinzufügen neuer Array-Elemente zu einem assoziativen Array möglich. Unter Verwendung unseres zweiten Arrays, assArray2, werden ein neuer Wert, „HP“ und ein Schlüssel „Maus“ zum Array hinzugefügt, wonach die aktuellen Elemente des Arrays erneut überprüft werden. Um die oben genannten Schritte abzuschließen, führen Sie die folgenden Befehle aus

echo "${assArray2[@]}"
assArray2+=([Mouse]=Logitech)
echo "${assArray2[@]}"

Ausgabe

Sie erhalten eine ähnliche Ausgabe wie die untenstehende, nachdem Sie die obigen Befehle ausgeführt haben.

So löschen Sie Daten aus einem assoziativen Array

Basierend auf dem Schlüsselwert kann ein Elementwert in einem assoziativen Array entfernt werden. Beim Löschen von Daten ist der Befehl „unset“ praktisch. Der Befehl löscht bestimmte Daten in einem assoziativen Array. Lassen Sie uns beispielsweise aus unserem assArray2 den Wert löschen, der den Schlüssel „Monitor“ enthält. Der Befehl prüft, ob der Wert den Schlüssel „Monitor“ hat. Anschließend wird der Wert mit Hilfe des unset-Befehls gelöscht. Mit dem ‚echo‘-Befehl wird überprüft und festgestellt, ob der Wert gelöscht wurde oder nicht.

unset assArray2[Monitor]
echo ${assArray2[Monitor]}

Ausgabe

Wenn der Befehl erfolgreich ausgeführt wird, erhalten Sie eine ähnliche Ausgabe wie die unten hervorgehobene

So finden Sie einen fehlenden Index in einem assoziativen Array

Eine bedingte Anweisung ist in diesem Fall von entscheidender Bedeutung, da sie hilft zu wissen, ob ein Index in einem Array fehlt. Beispielsweise können wir nach dem kürzlich gelöschten Array-Schlüssel „Monitor“ suchen. Dazu führen wir einen if-Anweisungsbefehl aus, um zu prüfen, ob der Schlüssel existiert oder nicht. Denken Sie daran, dass wir den Schlüssel aus unserem vorherigen Beispiel gelöscht haben. Daher sollte der falsche Wert ausgegeben werden.

if [ ${assArray2[Monitor]+_} ]; then echo "Found"; else echo "Not found"; fi

Ausgabe

So entfernen Sie ein assoziatives Array

Der zum Löschen von Daten aus einem assoziativen Array verwendete Befehl „unset“ wird auch zum Entfernen eines assoziativen Arrays verwendet. In diesem Beispiel verwenden wir unser erstes Array, assArray1. Der erste Befehl gibt die Werte des Arrays aus. Der zweite Befehl, der den Befehl „unset“ enthält, entfernt das Array. Der letzte Befehl prüft, ob das Array existiert oder nicht. Wenn das Array erfolgreich entfernt wurde, wird nichts auf der Ausgabekonsole angezeigt.

echo "${assArray1[@]}"
unset assArray1
echo "${assArray1[@]}"

Ausgabe

Datenarrays

Für die Speicherung zusammenhängender Daten sind Arrays von Bedeutung. Möglicherweise werden Sie aufgefordert, Variablen zum Speichern von Daten zu verwenden, aber dies ist nicht die geeignetste Methode, um große Datenspuren zu speichern und zu verfolgen. Um Ihre Daten besser indiziert und konsolidiert zu halten, müssen Sie daher Arrays verwenden. Außerdem ist die Verwendung von Arrays zum Speichern und Verfolgen großer Datenmengen effizienter als die Verwendung von Variablen. Arrays benötigen keinen Eintrag, um zu existieren, wie es bei Variablen der Fall ist. Sie sollten sich keine Gedanken über die genaue Menge der zu speichernden Daten machen, bevor Sie damit arbeiten. Das macht Arrays vorteilhaft, wenn es um umfangreiche, unvorhersehbare Daten geht. Kurz gesagt, Arrays sind viel mächtiger als Variablen und werden häufig in den meisten Programmiersprachen und Skriptsprachen wie Bash verwendet.

Schlussfolgerung

Die Verwendung eines assoziativen Arrays für die Datenspeicherung ist unerlässlich, wenn große Datenmengen mit Schlüssel-Wert-Paaren in Bash gespeichert werden. Der Artikel hat behandelt, wie man assoziative Arrays deklariert und initialisiert, Array-Schlüssel und -Werte parst, Array-Elemente hinzufügt und löscht, ein assoziatives Array und Daten-Arrays entfernt. Daher hoffen wir, dass alle unsere Leser nun in der Lage sind, alle behandelten Themen umzusetzen, um ihr Wissen und Verständnis über assoziative Arrays zu verbessern. Probieren Sie es jetzt aus.


Linux
  1. Wie erstelle ich ein Array eindeutiger Elemente aus einer Zeichenfolge/einem Array in Bash?

  2. Einzelne Klammer in der Bash-Variablenzuweisung?

  3. Bash-Array von Arrays?

  4. Alle Dateien außer den Dateien im Array abrufen – Bash?

  5. Bash-Arrays mit Beispielen

Bash-Arrays

Bash Shebang

Bash-Scripting – Assoziatives Array mit Beispielen erklärt

Bash-Scripting – Indiziertes Array mit Beispielen erklärt

Bash-Anfängerserie Nr. 4:Verwenden von Arrays in Bash

So verschieben Sie den Array-Wert in der Bash