Android

Bash-Arrays

Bash Tutorial 6: Arrays

Bash Tutorial 6: Arrays

Inhaltsverzeichnis:

Anonim

Arrays sind eine der am häufigsten verwendeten und grundlegendsten Datenstrukturen. Sie können sich vorstellen, dass ein Array eine Variable ist, in der mehrere Variablen gespeichert werden können.

Wir werden die Bash-Arrays behandeln und erklären, wie sie in Ihren Bash-Skripten verwendet werden.

Bash-Arrays

Bash unterstützt eindimensionale numerisch indizierte und assoziative Array-Typen. Auf numerische Arrays wird mit Ganzzahlen verwiesen, auf assoziative Arrays mit Zeichenfolgen.

Auf numerisch indizierte Arrays kann am Ende mit negativen Indizes zugegriffen werden, wobei der Index -1 auf das letzte Element verweist. Die Indizes müssen nicht zusammenhängend sein.

Im Gegensatz zu den meisten Programmiersprachen müssen Bash-Array-Elemente nicht vom gleichen Datentyp sein. Sie können ein Array erstellen, das sowohl Zeichenfolgen als auch Zahlen enthält.

Bash unterstützt keine mehrdimensionalen Arrays, und Sie können keine Array-Elemente verwenden, die auch Arrays sind.

Es gibt keine Begrenzung für die maximale Anzahl von Elementen, die in einem Array gespeichert werden können.

Erstellen von Bash-Arrays

Arrays in Bash können auf verschiedene Arten initialisiert werden.

Erstellen numerisch indizierter Arrays

Bash-Variablen sind untypisiert. Jede Variable kann als indiziertes Array verwendet werden, ohne es zu deklarieren.

Um ein Array explizit zu deklarieren, verwenden Sie das Declaration Builtin:

declare -a array_name

Eine Möglichkeit zum Erstellen eines indizierten Arrays ist die Verwendung des folgenden Formulars:

array_name=value_1 array_name=value_2 array_name=value_n

Wobei index_* eine positive ganze Zahl ist.

Eine andere Möglichkeit, ein numerisches Array zu erstellen, besteht darin, die Liste der Elemente in Klammern anzugeben, die durch ein Leerzeichen voneinander getrennt sind:

array_name=(element_1 element_2 element_N)

Wenn das Array mit dem obigen Formular erstellt wird, beginnt die Indizierung bei Null, dh das erste Element hat den Index 0 .

Assoziative Arrays erstellen

Im Gegensatz zu numerisch indizierten Arrays müssen die assoziativen Arrays deklariert werden, bevor sie verwendet werden können.

Um ein assoziatives Array zu deklarieren, verwenden Sie das declare builtin mit der Option -A (Großbuchstaben):

declare -A array_name

Assoziative Arrays können mit dem folgenden Formular erstellt werden:

declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz

Dabei kann index_* eine beliebige Zeichenfolge sein.

Sie können auch ein assoziatives Array mit dem folgenden Formular erstellen:

declare -A array_name array_name=(=value_foo =value_bar =value_xyz)

Array-Operationen

Die Syntax von Bash-Arrays sieht auf den ersten Blick vielleicht etwas seltsam aus, ist aber sinnvoller, wenn Sie diesen Artikel lesen.

Referenzelemente

Um auf ein einzelnes Element zu verweisen, müssen Sie den Elementindex kennen.

Auf jedes Element kann mit der folgenden Syntax verwiesen werden:

${array_name} Die Syntax für den Zugriff auf ein Array-Element ähnelt der Syntax der meisten Programmiersprachen. Die geschweiften Klammern ${} sind erforderlich, um die Dateinamenerweiterungsoperatoren der Shell zu umgehen.

Lassen Sie uns das Element mit dem Index 1 drucken:

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}

Helium

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium

Der einzige Unterschied zwischen @ und * besteht darin, dass das Formular ${my_array} in doppelte Anführungszeichen eingeschlossen ist. In diesem Fall wird * zu einem einzelnen Wort erweitert, bei dem die Array-Elemente durch ein Leerzeichen getrennt sind. @ erweitert jedes Array-Element zu einem separaten Wort. Dies ist besonders wichtig, wenn Sie das Formular zum Analphabetisieren durch Array-Elemente verwenden.

Um die Tasten des Arrays zu drucken, fügen Sie das ! Operator vor dem Array-Namen:

${!array_name}

Hier ist ein Beispiel:

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"

0 1 2 3

Array-Länge

Verwenden Sie das folgende Formular, um die Länge eines Arrays zu ermitteln:

${#array_name} Die Syntax ist die gleiche wie bei der Referenzierung aller Elemente mit dem # -Zeichen vor dem Arraynamen.

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}

4

Schleife durch das Array

Die häufigste Methode zum Durchlaufen der einzelnen Elemente in einem Array ist die Verwendung der for-Schleife:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done

Der obige Code durchläuft das Array und gibt jedes Element in einer neuen Zeile aus:

Hydrogen Helium Lithium Beryllium

Hier ist ein Beispiel, wie alle Schlüssel und Werte gedruckt werden:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Eine andere Möglichkeit, ein Array zu durchlaufen, besteht darin, die Länge des Arrays abzurufen und die C style Schleife zu verwenden:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Fügen Sie ein neues Element hinzu

Verwenden Sie das folgende Formular, um einem Bash-Array ein neues Element hinzuzufügen und seinen Index anzugeben:

my_array="New Element"

Hier ist ein Beispiel:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Aluminum

Eine andere Möglichkeit, einem Array ein neues Element hinzuzufügen, ohne den Index anzugeben, ist die Verwendung des Operators += . Sie können ein oder mehrere Elemente hinzufügen:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Cobalt Nickel

Löschen Sie ein Element

Um ein einzelnes Element zu löschen, müssen Sie den Elementindex kennen. Ein Element kann mit dem Befehl unset entfernt werden:

unset my_array

Sehen wir uns ein Beispiel an:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"

Hydrogen Helium Beryllium

Fazit

Wir haben erklärt, wie numerisch indizierte und assoziative Arrays erstellt werden. Wir haben auch gezeigt, wie Sie durch die Arrays iterieren, die Array-Länge berechnen und Elemente hinzufügen und entfernen.

Bash-Terminal