Die For-Schleife ist ein integraler Bestandteil jeder Programmiersprache. Es ermöglicht Programmen, eine bestimmte Anzahl von Elementen zu durchlaufen.
Wenn Sie beispielsweise eine Liste oder ein Array von ’n‘ Elementen durchlaufen möchten, verwenden Sie eine for-Schleife. Nehmen wir ein einfaches Beispiel:
1Violett2Indigo3Blau4GrünRegenbogentisch
Um Aktionen auszuführen oder die Elemente in der obigen Tabelle zu durchlaufen, benötigen wir eine For-Schleife.
Inhaltsverzeichnis
Bash für Schleife
In einem Bash-Skript lautet die For-Schleifen-Syntax wie folgt:
#!/bin/bash for VAR in 1 2 3 4 5.....N do ACTION 1 ACTION 2 ..... done
Bash For Loop ist ziemlich einfach. Die erste Zeile #!/bin/bash gibt an, dass der Code ein Bash-Skript ist. VAR steht für die temporäre Variable, die für Schleifen verwendet wird. N gibt die maximale Anzahl von Iterationen an. ‚do‘ und ‚done‘ starten bzw. stoppen die Schleife. Aktionen sind die Befehle, die innerhalb der Schleife ausgeführt werden.
Wir können Bash For Loop mit verschiedenen Variablen ausführen, wie Listen, Zeichenfolgen, Ganzzahlen und Arrays. Dieser Artikel zeigt einige gängige Beispiele für die Bash For-Schleife.
Sie können diese Programme direkt auf der Bash-Befehlszeile ausführen oder sie in einer Datei speichern und die Datei mit dem Bash-Befehl filename.sh ausführen.
Statische Liste lesen
Betrachten Sie die folgende Liste – rainbowColorList = Violet, Indigo, Blue, Green, Yellow, Orange, Red
Wir können die obige Zeichenfolgenliste mit der Bash For-Schleife wie folgt drucken:
#! /bin/sh # Define the list rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red # Comma separator pattern using //,/ for colors in ${rainbowColorList//,/ } do echo $colors done
Die Ausgabe ist die Liste der Elemente in einer neuen Zeile.
#Output Violet Indigo Blue Green Yellow Orange Red
Lesen eines Arrays
Die Syntax zum Deklarieren eines Arrays ist anders. Verwenden Sie Klammern für jedes Element (String).
rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for colors in "${rainbowArray[@]}"; do echo "I like $colors" done
‚@‘ wird verwendet, um durch jedes Element im Array zu iterieren.
#Output I like Violet I like Indigo I like Blue I like Green I like Yellow I like Orange I like Red
Wir können auch die For-Schleife verwenden, um die Indizes und die Array-Elemente auszugeben.
#Printing with index rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for i in "${!rainbowArray[@]}"; do echo "Color at index " $i " : " "${rainbowArray[$i]}" i=$((i+1)); done
#Output Color at index 0 : Violet Color at index 1 : Indigo Color at index 2 : Blue Color at index 3 : Green Color at index 4 : Yellow Color at index 5 : Orange Color at index 6 : Red
Beachten Sie, dass wir ‚!‘ in der Schleife, um den Elementindex zu erhalten.
Zahlenbereich iterieren
Wir können Bash For Loop verwenden, um über einen Bereich von Zahlen zu iterieren.
#iterating over range of numbers echo "Countdown begins..." for N in {10..0} do echo "$N" done
Das ‚..‘ gibt einen Zahlenbereich an.
#Output 10 9 8 7 6 5 4 3 2 1 0
Wir können Zählzahlen auch überspringen, indem wir den Bereich angeben.
Im folgenden Beispiel überspringen wir das Zählen um 3.
#iterating with skip counting echo "Countdown begins..." for N in {30..0..3} do echo "$N" done
Das obige Programm beginnt mit 30 als erste Zahl und zählt bis 0 herunter. Der letzte Parameter in der for-Schleife ‚3‘ gibt die Anzahl der Überspringungen an.
#Output 30 27 24 21 18 15 12 9 6 3 0
Zeichenfolgen und Zeichen
Mit Bash For Loop können wir viele interessante Zeichenfolgenoperationen durchführen.
Beispielsweise können wir jedes Zeichen einer Zeichenfolge lesen, indem wir den Operator „seq“ in einer For-Schleife verwenden:
#read characters of a string myword="welcome" for i in $(seq 1 ${#myword}) do echo "${myword:i-1:1}" done
Beachten Sie, dass ’seq‘ mit 1 beginnen sollte, um das erste Zeichen zuerst zu erhalten.
#Output W e l c o m e
Wir können die Zeichenfolgen auch einzeln durch Leerzeichen getrennt drucken:
#read each word from a sentence mysentence="Welcome to wdzwdz. One stop hub for all techies" for word in $mysentence; do echo $word done
#Output Welcome to wdzwdz. One stop hub for all techies
Ausdrücke
Ähnlich wie bei jeder anderen Programmiersprache wie Java können wir Ausdrücke in einer Bash-For-Schleife platzieren.
for (( var=10; var>=0; var-- )) do echo "Counting down...$var" done
#Output Counting down...10 Counting down...9 Counting down...8 Counting down...7 Counting down...6 Counting down...5 Counting down...4 Counting down...3 Counting down...2 Counting down...1 Counting down...0
Lesen von Befehlszeilenargumenten
Um aus Befehlszeilenargumenten zu lesen, verwenden wir den Befehl „read“. Im folgenden Beispiel erhalten wir einige Zahlen vom Benutzer und drucken die Summe mit Bash For Loop. Wir verwenden die Variable total, um die Zwischen- und Endsumme oder die Summe der Zahlen zu speichern.
read -a array -p "Enter the numbers you want to add:" total=0 for i in ${array[@]}; do let total+=$i done echo "Sum of the numbers is: $total"
Die Ausgabe ist:
#Output Enter the numbers you want to add: 3 4 66 Sum of the numbers is: 73
Gerade und ungerade Zahlen finden
Um ungerade und gerade Zahlen zwischen 1 und 10 (oder eine beliebige Zahl N) zu finden, sollten wir die if-Bedingung zusammen mit Bash for Loop verwenden. Um eine gerade Zahl zu bestimmen, teilen wir die Zahl durch 2 und wenn der Rest 0 ist, kategorisieren wir sie als gerade, sonst ungerade.
#declare the list where the even and odd numbers will be sorted and kept evennum="" oddnum="" for (( i=1; i<=10; i++ )) do remainder=$(( $i % 2 )) if [ $remainder -eq 0 ]; then evennum="$evennum $i " else oddnum="$oddnum $i " fi done echo "Even numbers are: "$evennum echo "Odd numbers are: "$oddnum
Beachten Sie, dass wir im obigen Beispiel den Bereich mit 10 angeben. Wir können diese Zahl ändern, um gerade und ungerade Zahlen zwischen beliebigen Bereichen zu erhalten. Sie können auch versuchen, die Nummer des Benutzers zu lesen, indem Sie den Befehl „read“ verwenden, den wir im vorherigen Abschnitt gelernt haben.
#Output Even numbers are: 2 4 6 8 10 Odd numbers are: 1 3 5 7 9
Endlosschleife
Infinity oder Endlosschleife ist eine Schleife, die nicht anhält, und das Programm muss mit Strg+C zum Anhalten gezwungen werden. Wir können ganz einfach eine Endlosschleife erstellen, indem wir das ‚; ;‘ Operator innerhalb der for-Schleife:
for (( ; ; )) do echo "Welcome to wdzwdz" done
#Output Welcome to wdzwdz Welcome to wdzwdz Welcome to wdzwdz Welcome to wdzwdz Welcome to wdzwdz Welcome to wdzwdz Welcome to wdzwdz Welcome to wdzwdz Welcome to wdzwdz Welcome to wdzwdz ^C $
Break-Anweisung
Break-Anweisungen werden verwendet, um die Schleife zu unterbrechen, wenn eine „if“-Bedingung erfüllt ist.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then break fi echo "Searching for Green, the color now is $color" done echo "I found my color $color"
In diesem Beispiel versuchen wir, die Farbe Grün zu finden. Die For-Schleife durchläuft jede Farbe, und sobald die grüne Farbe gefunden ist, verlässt das Programm die Schleife aufgrund der break-Anweisung.
#Output Searching for Green, the color now is Violet Searching for Green, the color now is Indigo Searching for Green, the color now is Blue I found my color Green
Erklärung fortsetzen
Weiter wird verwendet, um die aktuelle Schleife zu überspringen und basierend auf einer bestimmten Bedingung zur nächsten zu wechseln. Wenn Sie beispielsweise die Farbe „Grün“ aus unserem vorherigen Programm nicht drucken möchten, können Sie fortfahren, und alle anderen Farben außer Grün werden angezeigt.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then continue fi echo "$color" done
#Output Violet Indigo Blue Yellow Orange Red
Letzte Worte
Wir haben die häufigsten Verwendungen einer Bash-For-Schleife mit Strings, Ganzzahlen, Arrays und Listen behandelt. Wenn Sie Linux lernen, aber einen Windows 10-Computer haben, können Sie die WSL-Funktion verwenden und Linux auf Ihrem Windows-Computer installieren.
Sie können das Linux-Terminal dann ähnlich wie CMD verwenden.
Als Nächstes können Sie nachlesen, wie Sie Bash-Skripte mit Python ausführen?