Machen Sie sich mit Bash-Arrays vertraut – wie Sie sie deklarieren, manipulieren und löschen.
Arrays sind Datenspeicher, in denen Werte gespeichert werden, die in irgendeiner Beziehung zueinander stehen. Anders als in den meisten Programmiersprachen können Bash-Arrays Werte verschiedener Datentypen im selben Array speichern.
Bash verfügt über zwei Arten von Arrays: indizierte Arrays und assoziative Arrays. Bei indizierten Arrays beginnen die Indizes bei 0 bis (n-1), wie es in den meisten Sprachen üblich ist. Arrays in Bash sind jedoch spärlich. Dies bedeutet, dass Sie das (n-1)-te Array-Element zuweisen können, ohne das (n-2)-te Element zugewiesen zu haben.
In diesem Tutorial erfahren Sie, wie Sie mit Arrays in Bash arbeiten. Lass uns anfangen.
Definieren von Arrays
Es gibt drei Möglichkeiten, Arrays in Bash zu definieren. Ähnlich wie Bash-Variablen müssen Arrays bei der Erstellung initialisiert werden. Die einzige Ausnahme hiervon ist, wenn Sie das verwenden erklären Stichwort. Sie müssen außerdem sicherstellen, dass beim Initialisieren des Arrays auf beiden Seiten des Zuweisungsoperators kein Platz verbleibt.
Die erste Methode ist die zusammengesetzte Zuweisung von Werten zum Array-Namen. Hierzu gibt es zwei Möglichkeiten:
arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)
Bei der ersten zusammengesetzten Zuweisung werden die Werte in den runden Klammern ausgehend vom Index der Reihe nach zugewiesen [0] Zu [3].
Im zweiten Fall werden die Werte jedoch in der vom Programmierer angegebenen Reihenfolge einem Index zugewiesen.
Verwandt: Was sind Umgebungsvariablen in Linux? Alles, was Sie wissen müssen
Wenn Sie genau darauf achten arr2, werden Sie diesen Index bemerken [2] wurde weggelassen. Das Array wird weiterhin erstellt, ohne dass Fehler ausgegeben werden. Diese Zuweisung ist eigentlich eine Demonstration des spärlichen Speichers in Bash-Arrays, wie wir bereits erwähnt haben.
Beachten Sie, dass die Array-Werte nicht durch Kommas getrennt sind. Die Werte werden einfach durch Leerzeichen getrennt.
Die zweite Methode deklariert indirekt das Array. Sie können einfach damit beginnen, Null-Array-Elementen Werte zuzuweisen:
arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes
Die dritte Möglichkeit besteht darin, das Array explizit mit dem Schlüsselwort zu deklarieren erklären:
declare -a arrayName
Operationen auf Arrays
Um auf Array-Elemente zuzugreifen, verwenden Sie diese Syntax: ${array[index]}
fruits=(mango banana apples)
echo${fruits[1]}# output is banana
Wenn Sie stattdessen das gesamte Array ausdrucken müssen, verwenden Sie die @ Symbol als
Index von ${array[index]}:
echo${fruits[@]}
Um die Anzahl der Elemente im Array herauszufinden, verwenden Sie die # Symbol wie unten gezeigt:
echo ${#fruits[1]}
Möglicherweise müssen Sie auch Array-Elemente ändern – siehe Beispiel unten, wie das geht. Es ähnelt dem Hinzufügen eines neuen Elements. Der einzige Unterschied besteht darin, dass Sie einen Wert durch einen Index ersetzen, der bereits einen Wert hat.
fruits[1]=pears
Assoziative Arrays
Ein Array, dessen Schlüssel beliebige Werte sind, wird als assoziatives Array bezeichnet. Diese Arrays werden zum Speichern verwandter Schlüssel-Wert-Paare verwendet.
Verwandt: So verwandeln Sie Bash-Skripte mithilfe von AppleScript in anklickbare Apps
Um ein assoziatives Array zu definieren, müssen Sie dies explizit mit dem Schlüsselwort tun erklären.
# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast
Sie können auf ein Mitgliedselement auf die gleiche Weise zugreifen wie auf indizierte Arrays:
echo${animal[lion]}
Wenn Sie alle Werte ausdrucken möchten, können Sie die verwenden @ Symbol wie unten gezeigt:
echo${animal[@]}
Wenn Sie alle Array-Schlüssel ausdrucken möchten, können Sie die verwenden @ Und ! Symbole wie unten gezeigt:
echo${!animal[@]}
Um die Anzahl der Elemente des assoziativen Arrays zu ermitteln, verwenden Sie dieselbe Syntax wie bei indizierten Arrays (im letzten Abschnitt demonstriert).
Wenn Sie ein Array-Element oder das gesamte Array löschen möchten, verwenden Sie die folgende Syntax:
unset arrayName[Key] # delete array item
unset arrayName # delete entire array
Verwenden des printf-Befehls
Möglicherweise ist Ihnen aufgefallen, dass in diesem gesamten Artikel das verwendet wird Echo Befehl zur Ausgabe von Daten an die Shell. Der Echo Der Befehl funktioniert für dieses Tutorial, bietet jedoch nur wenige Funktionen und Flexibilität bei der Zeichenfolgenformatierung.
Allerdings ist die printf Der Befehl bietet spezifischere Formatierungsoptionen, die das Erstellen von Bash-Skripten zum Kinderspiel machen. Lernen printf Die Funktion wird sicherlich Ihre Erfahrung und Effizienz bei der Zeichenfolgenformatierung in Bash verbessern.