Bash-Skripting – Array

Bash-Skripting – Array

Arrays sind wichtige Konzepte in der Programmierung oder Skripterstellung. Mithilfe von Arrays können wir Elemente in Listenform speichern und abrufen, die für bestimmte Aufgaben verwendet werden können. In Bash verfügen wir auch über Arrays, die uns beim Erstellen von Skripten in der Befehlszeile zum Speichern von Daten in einem Listenformat helfen. In diesem Artikel werden wir die Grundlagen von Arrays im Bash-Scripting verstehen.

Arrays erstellen

Um ein Basisarray in einem Bash-Skript zu erstellen, können wir die Deklaration verwenden -A Befehl gefolgt vom Namen der Array-Variablen, die Sie angeben möchten.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) 

ODER

#!/bin/usr/env bash sport[0]=football sport[1]=cricket sport[2]=hockey sport[3]=basketball 

Der Wert der Elemente kann je nach Wunsch eine beliebige Ganzzahl oder Zeichenfolge oder jede andere Datenform sein. Wir können sehen, dass das Array in einem Bash-Skript auf zwei Arten deklariert wird: Erstere scheint bequemer und weniger hektisch zu deklarieren. Wenn wir das Array auf einmal deklarieren möchten, ist Ersteres die optimale Wahl, wenn die Elemente jedoch in kleinen Stücken hinzugefügt werden sollen, ist Letzteres eine gute Wahl.

Drucken der Arrays

Wenn wir nach der Deklaration des Arrays alle Elemente im Array anzeigen möchten, können wir das @-Symbol verwenden.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' 

echo '${array_name[@]}' 

Wir verwenden das [@] als Index für das Array, um alle Elemente anzuzeigen. Alle Elemente werden durch Leerzeichen getrennt gedruckt. Die Anführungszeichen um die Variable erweitern und drucken alle Elemente im Array.

Iterieren über das Array

Um ein Array Element für Element zu durchlaufen, können wir Schleifen verwenden und beliebige Operationen innerhalb des Array-Körpers ausführen.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) for i in ${nums[@]} do echo -e '$i 
' done 

Wie wir sehen können, haben wir eine for-Schleife verwendet, um die Elemente einzeln aus dem Array auszugeben. Wir haben im vorherigen Abschnitt den Trick angewendet, alle Elemente des Arrays abzurufen und sie nacheinander in der for-Schleife zu durchlaufen. Der ${array_name[@]} wird auf alle Elemente im Array erweitert und die for-Schleife durchläuft sie nacheinander mit dem Iterator in dem Beispiel, um das es sich handelt Variable i , innerhalb des Körpers der for-Schleife drucken wir das aus Variable/Iterator i und so über das Array iterieren.

Ermitteln Sie die Anzahl der Elemente im Array

Um die Nummer des Element-Arrays abzurufen, können wir den #-Operator vor dem Array-Namen in den s in ${array_name[@]} verwenden.

 #!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${#sport[@]}' 

Wir geben also die Größe des Arrays zurück, indem wir den Befehl verwenden ${#sport[@]}, Das # wird verwendet, um die Größe der Variablen daneben zu ermitteln. Mit den doppelten Anführungszeichen wird der Wert des Befehls ausgewertet und wir erhalten die gewünschte Anzahl der Elemente im Array.

Einfügen eines Elements in ein Array

Das Einfügen eines Elements ist ganz einfach. Wir müssen den entsprechenden Index des Elements festlegen, gefolgt vom Wert des Elements, das Sie angeben möchten.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' sport[4]='dodgeball' sport[2]='golf' echo '${sport[@]}' 

Wir haben das 5. Element (4. Index) zum Array hinzugefügt und auch das 3. Element (2. Index) des Arrays geändert/bearbeitet. Der Arrayname[Index]=Wert sind alle Tricks zum Hinzufügen, Ändern oder Initialisieren der Elemente des Arrays.

Wir können einem Array auch Elemente hinzufügen, indem wir den Operator += verwenden.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' sport+=('golf' 'baseball') echo '${sport[@]}' echo 'Size : ${#sport[@]}' 

Wie im Beispiel zu sehen ist, können wir mit minimalem Code mehrere Elemente zum Array hinzufügen. Wir verwenden array_name+=(elements), um Elemente an das Array anzuhängen.

Ein Element aus einem Array löschen

Um ein Element aus dem Array zu löschen, können wir den Befehl unset verwenden. Der Befehl übernimmt den Namen der Variablen, in unserem Fall den Array-Namen und den Index dieses Elements. Der Index kann auch relativ sein, d. h. -1 gibt das letzte Element an, -2 das vorletzte und so weiter.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[1] echo '${sport[@]}' echo '${#sport[@]}' 

Wie wir sehen können, löscht ein nicht gesetzter Arrayname[Index] das Element am Index aus dem Array. Außerdem wurde die Größe des Arrays von 4 auf 3 reduziert, was darauf hinweist, dass das Element vollständig entfernt und nicht nur durch Leerzeichen ersetzt wurde.

Verwendung relativer Indizes

Wenn wir Indizes wie -1, -2 usw. verwenden, werden die Elemente ab dem letzten Element referenziert und können daher auch von hinten in relativer Reihenfolge gelöscht oder geändert werden.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[-3] echo '${sport[@]}' 

Wie wir sehen können, wird Index 1 auch von hinten als -3 referenziert und daher wird es relativ einfacher, bestimmte Elemente in einem großen Array zu referenzieren.

Spleißen Sie ein Array

Wir können ein Array zusammenfügen (einen Trank herausnehmen), um es einer anderen Variablen/einem anderen Array zuzuweisen oder auszugeben.

#!/bin/usr/env bash declare -a sport sport+=('football' 'cricket' 'hockey' 'basketball') sport+=('golf' 'baseball') echo 'sport = ${sport[@]}' arr='${sport[@]:1:3}' echo 'arr = ${arr[@]}' 

Wir haben einen Teil aus dem Sport-Array herausgenommen, d. h. das Element zwischen Index 1 und 3 einschließlich, und es der Variable arr zugewiesen, die ebenfalls ein Array ist. Der @-Operator ruft alle Elemente aus dem Array ab und dann können wir das Array zwischen den Indizes 1 und 3 zusammenfügen, sodass wir die Elemente bei 1,2 und 3 (Cricket, Hockey und Baseball) aus dem Sport-Array haben.

Definieren Sie ein statisches Array und drucken Sie die Elemente des Arrays

#To declare static Array programmingArray=(Java Python Ruby Perl) #In below 2 ways we can print the elements of the static array echo 'Way 1 of printing static values by using [@]:0 - ' ${programmingarray[@]$ echo 'Way 2 of printing static values by using [*]:0 - ' ${programmingarray[*]$ 

Auf zwei Arten können wir Elemente eines statischen Arrays drucken

Programmausführung

sh So, we can give as sh arraycheck2.sh # arraycheck2.sh is the name of the script file here 

Übergabe der Befehlszeilenargumente in einer Skriptdatei

#All the array elements are stored in an array called programmingArray programmingArray=('$@') #Index values start from 0 #If we do not specify the index, it will take up the size of first index value echo 'Size of programmingArray at 0th location..:' $(#programmingArray[0]} echo 'Size of programmingArray at 1st location..:' $(#programmingArray[1]} 

Das obige Skript kann als ausgeführt werden

# Hier sind Java, Python und Ruby Befehlszeilenargumente

sh arrayCheck.sh Java Python Ruby 

Schritte zur Skriptausführung:

programmingArray=(Java Python Ruby)

#Java wird am 0. Index vorhanden sein, seine Größe kann wie folgt berechnet werden

${#programmingArray[0]}

Ebenso ist Python am 1. Index vorhanden, seine Größe kann wie folgt berechnet werden

${#programmingArray[1]}

Ausgabe:

Iterieren der Array-Werte mithilfe einer for-Schleife

$@ gibt alle Werte an, die über Befehlszeilenargumente übergeben wurden, und wird in einem Array gespeichert.

Es kann mithilfe der for-Schleife iteriert werden

declare -a programmingArray=('$@') i=0 for programming in '$@' do echo 'Array value at index ' $i ' : ' $programming i=$((i+1)); done 

Ausgabe:

Werfen wir einen kurzen Blick darauf, was jedes einzelne Symbol darstellt

Syntax

Ausgabe
arr=()

arr[0]=3 1. Element überschreiben

arr+=(4) Wert(e) anhängen

str=$(ls) Speichert die ls-Ausgabe als String

arr=( $(ls) ) Speichern Sie die ls-Ausgabe als Array von Dateien

${arr[@]:s:n} Ruft n Elemente beginnend beim Index ab

#Wir können eine Reihe von Werten bereitstellen

so was

arr=(eins zwei drei)

Um ein Array zu initialisieren
${arr[0]} Um das erste Element abzurufen. Der Index beginnt immer mit 0
${arr[@]} Um alle Elemente abzurufen, können wir anschließend in einer Schleife iterieren
${!arr[@]} Nur um Array-Indizes abzurufen
${#arr[@]} So berechnen Sie die Größe eines Arrays
arr[2]=3 Um das 3. Element zu überschreiben, müssen wir es auf diese Weise verwenden. Da der Index bei 0 beginnt, ist arr[2] korrekt.
arr+=(40) Um Werte anzuhängen, können wir + verwenden und dann mit = zuweisen, und daher wird += verwendet.
str=$(ls) So speichern Sie die Ausgabe des ls-Befehls als Zeichenfolge (Beispiel 4 wird für diese Ausgabe angezeigt)
arr=( $(ls) ) So speichern Sie die ls-Ausgabe als Array von Dateien (Beispiel 5 wird für diese Ausgabe angezeigt)
${arr[@]:s:n} Um n Elemente ab Index s abzurufen