Die For-Schleife ist ein wesentlicher Bestandteil jeder Programmiersprache. Mit ihr können Programme durch eine bestimmte Anzahl von Elementen iterieren.
Wenn Sie zum Beispiel eine Liste oder ein Array mit 'n' Elementen durchgehen wollen, verwenden Sie eine for-Schleife. Lassen Sie uns ein einfaches Beispiel nehmen:
1 | Violett |
2 | Indigo |
3 | Blau |
4 | Grün |
Um eine Aktion auszuführen oder die Elemente in der obigen Tabelle zu durchlaufen, benötigen wir eine For-Schleife.
Bash For-Schleife
In einem Bash-Skript sieht die For Loop-Syntax wie folgt aus:
#!/bin/bash
for VAR in 1 2 3 4 5.....N
do
ACTION 1
ACTION 2
.....
done
Die For-Schleife der Bash ist recht einfach. Die erste Zeile #!/bin/bash
zeigt an, dass der Code ein Bash-Skript ist. VAR steht für die temporäre Variable, die für die Schleife verwendet wird. N gibt die maximale Anzahl der Iterationen an. 'do' und 'done' starten bzw. stoppen die Schleife. Actions sind die Befehle, die innerhalb der Schleife ausgeführt werden.
Wir können Bash For Loop mit verschiedenen Variablen wie Listen, Strings, Ganzzahlen und Arrays ausführen. Dieser Artikel zeigt einige gängige Beispiele für die Bash For Loop.
Sie können diese Programme direkt in 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 = Violett, Indigo, Blau, Grün, Gelb, Orange, Rot
Wir können die obige String-Liste mit Hilfe der Bash For Loop wie folgt ausgeben:
#! /bin/sh
# Definieren Sie die Liste
rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red
# Komma-Trennzeichenmuster mit //,/
for colors in ${rainbowColorList//,/ }
do
echo $colors
done
Die Ausgabe ist die Liste der Elemente in einer neuen Zeile.
#Output
Violett
Indigo
Blau
Grün
Gelb
Orange
Rot
Ein Array lesen
Die Syntax für die Deklaration eines Arrays ist anders. Verwenden Sie Klammern für jedes Element (String).
rainbowArray=("Violett" "Indigo" "Blau" "Grün" "Gelb" "Orange" "Rot")
for colors in "${rainbowArray[@]}"; do
echo "Ich mag $Farben"
done
mit '@' wird durch jedes Element im Array iteriert.
#Output
Ich mag Violett
Ich mag Indigo
Ich mag Blau
Ich mag Grün
Ich mag Gelb
Ich mag Orange
Ich mag Rot
Wir können auch die For-Schleife verwenden, um die Indizes und die Array-Elemente zu drucken.
#Drucken mit Index
rainbowArray=("Violett" "Indigo" "Blau" "Grün" "Gelb" "Orange" "Rot")
for i in "${!rainbowArray[@]}";
do
echo "Farbe bei Index " $i " : " "${rainbowArray[$i]}"
i=$((i 1));
done
#Output
Farbe bei Index 0 : Violett
Farbe bei Index 1 : Indigo
Farbe bei Index 2 : Blau
Farbe bei Index 3 : Grün
Farbe bei Index 4 : Gelb
Farbe bei Index 5 : Orange
Farbe bei Index 6 : Rot
Beachten Sie, dass wir '!' in der Schleife verwenden, um den Elementindex zu erhalten.
Zahlenbereich iterieren
Wir können die Bash For-Schleife verwenden, um über einen Zahlenbereich zu iterieren.
#Iterieren über Zahlenbereich
echo "Countdown beginnt..."
for N in {10..0}
do
echo "$N"
done
Das '..' zeigt einen Zahlenbereich an.
#Output
10
9
8
7
6
5
4
3
2
1
0
Wir können auch Zählnummern überspringen, indem wir den Bereich angeben.
Im folgenden Beispiel wird die Zahl 3 übersprungen.
#Iterieren mit Überspringen der Zählung
echo "Der Countdown beginnt..."
for N in {30..0..3}
do
echo "$N"
done
Das obige Programm beginnt mit 30 als erste Zahl und zählt bis 0. Der letzte Parameter in der for-Schleife '3' gibt die Anzahl der Überspringungen an.
#Ausgabe
30
27
24
21
18
15
12
9
6
3
0
Zeichenketten und Zeichen
Mit der Bash For Loop können wir eine Menge interessanter String-Operationen durchführen.
Zum Beispiel können wir jedes Zeichen einer Zeichenkette lesen, indem wir den Operator 'seq' in einer For-Schleife verwenden:
#Zeichen eines Strings lesen
myword="welcome"
for i in $(seq 1 ${#myword})
do
echo "${myword:i-1:1}"
done
Beachten Sie, dass der 'seq' mit 1 beginnen sollte, um das erste Zeichen zuerst zu erhalten.
#Ausgabe
W
e
l
c
o
m
e
Wir können auch die durch Leerzeichen getrennten Zeichenketten einzeln ausgeben:
#Lesen Sie jedes Wort aus einem Satz
mysentence="Willkommen bei GeekFlare. One stop hub for all techies"
for word in $mysentence; do
echo $word
done
#Output
Willkommen
bei
GeekFlare.
Ein
stop
hub
für
alle
techies
Ausdrücke
Ähnlich wie in jeder anderen Programmiersprache, z.B. Java, können wir Ausdrücke innerhalb einer Bash For-Schleife platzieren.
for (( var=10; var>=0; var-- ))
do
echo "Counting down...$var"
done
#Ausgabe
Abwärtszählen...10
Abwärtszählen...9
Abwärtszählen...8
Abwärtszählen...7
Abwärtszählen...6
Abwärtszählen...5
Abwärtszählen...4
Abwärtszählen...3
Abwärtszählen...2
Abwärtszählen...1
Abwärtszählen...0
Lesen von Befehlszeilenargumenten
Um Befehlszeilenargumente zu lesen, verwenden wir den Befehl 'lesen'. Im folgenden Beispiel erhalten wir einige Zahlen vom Benutzer und geben die Summe mit Hilfe der Bash For-Schleife aus. Wir verwenden die Variable total, um die Zwischen- und Endsumme oder die Summe der Zahlen zu speichern.
read -a array -p "Geben Sie die Zahlen ein, die Sie addieren möchten:"
total=0
for i in ${array[@]}; do
let total =$i
done
echo "Summe der Zahlen ist: $total"
Die Ausgabe ist:
#Output
Geben Sie die Zahlen ein, die Sie addieren möchten: 3 4 66
Die Summe der Zahlen ist: 73
Finden von ungeraden und geraden Zahlen
Um gerade und ungerade Zahlen zwischen 1 und 10 (oder eine beliebige Zahl N) zu ermitteln, sollten wir die if-Bedingung zusammen mit der Bash for-Schleife verwenden. Um eine gerade Zahl zu ermitteln, teilen wir die Zahl durch 2 und wenn der Rest 0 ist, dann wird sie als gerade eingestuft, ansonsten als ungerade.
#Deklarieren Sie die Liste, in der die geraden und ungeraden Zahlen sortiert und gespeichert werden
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 "Gerade Zahlen sind: "$evennum
echo "Ungerade Zahlen sind: "$oddnum
Beachten Sie, dass wir im obigen Beispiel den Bereich mit 10 angeben. Wir können diese Zahl ändern, um gerade und ungerade Zahlen in einem beliebigen Bereich zu erhalten. Sie können auch versuchen, die Zahl vom Benutzer zu lesen, indem Sie den Befehl 'read' verwenden, den wir im vorherigen Abschnitt gelernt haben.
#Ausgabe
Gerade Zahlen sind: 2 4 6 8 10
Ungerade Zahlen sind: 1 3 5 7 9
Unendliche Schleife
Eine unendliche Schleife ist eine Schleife, die nicht aufhört, ausgeführt zu werden, und das Programm muss mit Strg C zum Anhalten gezwungen werden. Wir können eine unendliche Schleife ganz einfach mit dem Operator '; ;' innerhalb der for-Schleife erstellen:
for (( ; ; ))
do
echo "Willkommen bei Geekflare"
done
#Output
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
Willkommen bei Geekflare
^C
$
Pause-Anweisung
Break-Anweisungen werden verwendet, um die Schleife zu verlassen, 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 "Ich habe nach Grün gesucht, die Farbe ist jetzt $color"
done
echo "Ich habe meine Farbe $color gefunden"
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 wurde, verlässt das Programm die Schleife aufgrund der Break-Anweisung.
#Output
Suche nach Grün, die Farbe ist jetzt Violett
Suche nach Grün, die Farbe ist jetzt Indigo
Suche nach Grün, die Farbe ist jetzt Blau
Ich habe meine Farbe Grün gefunden
Weiter-Anweisung
Continue wird verwendet, um die aktuelle Schleife zu überspringen und zur nächsten Schleife überzugehen, wenn eine bestimmte Bedingung erfüllt ist. Wenn Sie z.B. die Farbe 'Grün' aus unserem vorherigen Programm nicht ausgeben möchten, können wir continue eingeben, 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
Violett
Indigo
Blau
Gelb
Orange
Rot
Letzte Worte
Wir haben die gebräuchlichsten Verwendungen einer Bash For-Schleife mit Strings, Ganzzahlen, Arrays und Listen behandelt. Wenn Sie Linux lernen, aber einen Windows 10 Rechner haben, können Sie die WSL-Funktion nutzen und Linux auf Ihrem Windows Rechner installieren.
Anschließend können Sie das Linux-Terminal auf ähnliche Weise wie CMD verwenden.
Als nächstes können Sie sich ansehen, wie Sie Bash-Skripte mit Python ausführen können.