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

Bash-Scripting – Indiziertes Array mit Beispielen erklärt

Arrays sind eine Art von Datenstruktur, die zum Speichern von Werten eines bestimmten Typs verwendet wird. Sie können sich ein Array auch als Variable vorstellen, aber eine Variable kann nur einen Wert speichern, während ein Array mehrere Werte darin speichern kann. Das Konzept des Arrays ist nicht nur an bash gebunden. Jede Programmiersprache, mit der Sie arbeiten, enthält Arrays, jedoch mit Implementierungsunterschieden.

Bash unterstützt zwei Arten von Arrays:

  • Indiziertes Array
  • Assoziatives Array

Indizierte Arrays sind ein Array-Typ, in dem Elemente (Werte) gespeichert und einer Ganzzahl, beginnend bei 0, zugewiesen werden bis N . Die Elemente innerhalb des Arrays werden über die Indexnummer referenziert. Mehr dazu erfahren Sie im kommenden Artikel. Das Hauptaugenmerk dieses Artikels liegt nur auf indizierten Arrays.

Indiziertes Array in Bash initialisieren

Der erste Schritt zur Arbeit mit dem Array besteht darin, es zu erstellen. Der Begriff Array erstellen, definieren, initialisieren wird austauschbar verwendet, weist aber auf die gleiche Bedeutung hin - das Erstellen des Arrays.

Um ein Array zu erstellen, sollten Sie Klammern verwenden und die Array-Elemente (Werte) innerhalb der Klammern platzieren.

$ arr1=( one 2 three 4 )

Wichtige Hinweise:

  • Bash-Arrays können Elemente eines anderen Datentyps speichern. In einigen Programmiersprachen können Sie Werte nur in einem Array desselben Typs speichern.
  • Es gibt keine Beschränkungen, wie viele Elemente im Array gespeichert werden können. Dies hängt von der Verfügbarkeit Ihres Systemspeichers ab.

Sie können auch declare verwenden Befehl mit dem -a Flag, um ein indiziertes Array zu erstellen.

$ declare -a arr1
$ arr1=( one 2 three 4 )

Oder,

$ declare -a arr1=( one 2 three 4 )

Wie Elemente eines Arrays hinzugefügt oder angezeigt werden

Sie können entweder ein Array mit Werten erstellen, wie im vorherigen Abschnitt gezeigt, oder einfach ein leeres Array erstellen und später Werte hinzufügen. Unten sehen Sie, wie Sie ein leeres Array erstellen.

$ locations=()

Jedes Element in einem Array hat einen zugeordneten Indexwert, der bei 0 beginnt bis N . Sie müssen neue Elemente zu einem Array hinzufügen, indem Sie die Indexposition verwenden.

$ locations[0]="Chennai"
$ locations[1]="Mumbai"

Hier ist die grafische Darstellung des Hinzufügens von Elementen zu einem Array.

Um die Elemente in einem Array anzuzeigen, können Sie eine der folgenden Syntaxen verwenden.

$ echo ${locations[@]}
$ echo ${locations[*]}

Um den Unterschied zwischen @ und * zu erfahren und wie es mit Arrays funktioniert, lesen Sie den Abschnitt „Schleife über Array-Elemente“ in unserer Bash For-Schleife Anleitung.

Wenn Sie versuchen, die Array-Elemente aufzulisten, ohne @ zu verwenden oder * nur das erste Element im Array wird gedruckt.

$ echo ${locations}

Sie können direkt auf ein bestimmtes Element zugreifen, indem Sie seine Indexposition verwenden.

$ echo ${locations[1]}

Indexwert eines Arrays

Im vorherigen Abschnitt habe ich gezeigt, wie Elemente in einem Array mithilfe der Indexposition hinzugefügt werden. Wenn Sie Arrays mithilfe von Indexpositionen hinzufügen, können Sie Elemente überspringen und an den verschiedenen Indexpositionen hinzufügen.

Die Array-Positionen haben zwei Elemente an den Positionen 0 und 1 . Jetzt kann ich Index 2 überspringen und zu den verschiedenen Indexpositionen hinzufügen.

$ locations[5]="Delhi"

Aus dem obigen Bild können Sie sehen, dass ich dem Array an der Indexposition 5 ein neues Element hinzugefügt habe.

Wenn Sie die Indexwerte von Elementen drucken möchten, stellen Sie dem Array den "!" voran Symbol wie unten:

$ echo ${!locations[@]}

Dadurch werden nur die Indexwerte gedruckt, anstatt die Elemente zu drucken.

Um sowohl den Index als auch die Elemente zu drucken, verwenden Sie das folgende Snippet.

for val in ${!locations[@]}
do
   echo "index = ${val} , value = ${locations[$val]}"
done

Werte an ein Array anhängen

Sie können einem Array neue Elemente hinzufügen, ohne ihre Indexwerte zu verwenden, wodurch Elemente an das Array angehängt werden.

locations=( Chennai Mumbai Delhi )
locations+=( Bangalore )
locations+=( Hyderabad )
$ echo ${locations[@]}
$ echo ${!locations[@]}

Länge eines Arrays finden

Sie können die Anzahl der Elemente in einem Array ermitteln, indem Sie # Symbol vor dem Array.

$ echo ${#locations[@]}

Verwenden Sie denselben # Symbol können Sie auch feststellen, ob das Array leer ist oder nicht.

if [[ ${#locations[@]} -ne 0 ]]; then
    echo "Array is Not empty"
else
    echo "Array is Empty"
fi

Elemente aus einem Array entfernen

Um ein Element aus dem Array zu entfernen, können Sie den unset verwenden Befehl. Sehen Sie sich das folgende Beispiel an, in dem unset verwendet wird Befehl das Element aus index(2) wird entfernt.

$ echo ${locations[@]}
$ unset locations[2]
$ echo ${locations[@]}

Ein Array entfernen

Um das Array zu entfernen, können Sie denselben unset verwenden Befehl.

$ unset locations
$ echo ${locations[@]}

Ein Array leeren

Manchmal möchten Sie vielleicht alle Elemente aus dem Array entfernen und das Array leer lassen. In diesem Fall können Sie das Array einfach neu erstellen.

$ echo ${locations[@]}
Chennai Mumbai Delhi Hyderabad Bangalore
$ locations=()
$ echo ${locations[@]}

Befehlsausgabe als Array speichern

Sie können beliebige Befehle ausführen und versuchen, die Ausgabe in einem Array zu speichern. Der Befehl sollte in Klammern eingeschlossen werden damit die Ausgabe als Array gespeichert wird.

$ path_list=( $(echo $PATH | tr ":" "\n") )
$ echo ${path_list[@]}

Array-Slicing

Slicing gibt Ihnen die Flexibilität, bestimmte Elemente des Arrays basierend auf ihrer Indexposition herauszuziehen.

Es folgt die Syntax für das Slicing:

${locations[@]:index:length}

Wenn Sie alle Elemente ab einer bestimmten Anfangsindexposition erfassen möchten, können Sie dies folgendermaßen tun, indem Sie nur den Index verwenden.

$ echo ${locations[@]:index} # syntax
$ echo ${locations[@]:2}

Im obigen Beispiel wird das Array ab Indexposition 2 bis zum letzten Element gedruckt. Wenn Sie die Länge zusammen mit dem Index angeben, wird die folgende Formel verwendet, um das Array aufzuteilen.

From index to index+length-1 (inclusive) # Formula
$ echo ${locations[@]:1:3}

Wenn Sie den Index überspringen und nur die Länge angeben, wird er anhand der folgenden Formel geschnitten.

From Index 0 to length-1 (inclusive)
$ echo ${locations[@]::4}

Schlussfolgerung

In diesem Artikel habe ich Sie durch das bash indexierte Array geführt . Arrays sind sehr wichtig, wenn Sie anfangen, komplexe Bash-Skripte zu schreiben. Sie geben Ihnen die Möglichkeit, Daten unterschiedlichen Typs einfach zu speichern, abzurufen und zu manipulieren. Im Gegensatz zu Programmiersprachen wie Python gibt es keine integrierten Möglichkeiten, Arrays einfach zu verwenden, um einige komplexe Aufgaben auszuführen, die aber dennoch erreichbar sind.

In unserem nächsten Leitfaden werden wir über Assoziatives Array sprechen im Detail.

  • Bash-Skripting – Assoziatives Array mit Beispielen erklärt

Verwandte Lektüre:

  • Bash-Skripting – While- und Until-Schleife mit Beispielen erklärt
  • Bash-Scripting – Funktionen mit Beispielen erklärt
  • Bash-Scripting – Variablen mit Beispielen erklärt
  • Bash-Umleitung mit Beispielen erklärt
  • Bash-Echo-Befehl mit Beispielen in Linux erklärt
  • Bash Heredoc-Tutorial für Anfänger

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

  2. Bash-Arrays mit Beispielen

  3. Bash-If-Else-Anweisung mit Beispielen

  4. AWK-Arrays erklärt mit 5 praktischen Beispielen

  5. Das ultimative Bash-Array-Tutorial mit 15 Beispielen

Bash-Scripting – Printf-Befehl mit Beispielen erklärt

Bash-Scripting – Assoziatives Array mit Beispielen erklärt

Tr-Befehl in Linux mit Beispielen erklärt

Bash-Scripting Teil 2 – For- und While-Schleifen mit Beispielen

Bash Scripting Einführungstutorial mit 5 praktischen Beispielen

Bash-Skript für Schleife mit Beispielen erklärt