Bash Tutorial 6: Arrays
Inhaltsverzeichnis:
- Bash-Arrays
- Erstellen von Bash-Arrays
- Erstellen numerisch indizierter Arrays
- Assoziative Arrays erstellen
- Array-Operationen
- Referenzelemente
- Array-Länge
- Schleife durch das Array
- Fügen Sie ein neues Element hinzu
- Löschen Sie ein Element
- Fazit
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}"
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}
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}"
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-TerminalMicrosoft Research Asia veranstaltet Gates zum 10-Jahres-Bash

Microsoft Research Asia ist von einem Dutzend Personen 1998 auf über 350 ein Jahrzehnt später gewachsen.
Ausführen von Bash unter Ubuntu unter Windows 10

Wenn Sie Windows Subsystem für Linux aktivieren, können Sie Bash unter Ubuntu in Bash-Skripten von Windows 10 ausführen , Linux-Kommandozeilen-Tools, Linux-First-Tools.
Bash for loop

In Bash-Skripten gibt es drei grundlegende Schleifenkonstrukte: for loop, while loop und until loop. In diesem Tutorial werden die Grundlagen von for-Schleifen in Bash sowie die break- und continue-Anweisungen behandelt, um den Ablauf einer Schleife zu ändern.