Schleifen sind eines der grundlegenden Konzepte von Programmiersprachen. Schleifen sind praktisch, wenn Sie eine Reihe von Befehlen mehrmals ausführen möchten, bis eine bestimmte Bedingung erfüllt ist.
In Skriptsprachen wie Bash sind Schleifen nützlich, um sich wiederholende Aufgaben zu automatisieren. Es gibt drei grundlegende Schleifenkonstrukte in Bash-Skripten, for
Schleife, while
Schleife und until
Schleife.
Dieses Tutorial behandelt die Grundlagen von while
Schleifen in Bash. Wir zeigen Ihnen auch, wie Sie den break
verwenden und continue
Anweisungen, um den Ablauf einer Schleife zu ändern.
Bash while
Schleife #
Das while
Schleife wird verwendet, um einen gegebenen Satz von Befehlen eine unbekannte Anzahl von Malen auszuführen, solange die gegebene Bedingung als wahr ausgewertet wird.
Die Bash while
Schleife hat folgende Form:
while [CONDITION]
do
[COMMANDS]
done
Das while
Anweisung beginnt mit dem while
Schlüsselwort, gefolgt vom bedingten Ausdruck.
Die Bedingung wird vor der Ausführung der Befehle ausgewertet. Wenn die Bedingung wahr ist, werden Befehle ausgeführt. Andernfalls, wenn die Bedingung als falsch ausgewertet wird, wird die Schleife beendet und die Programmsteuerung wird an den folgenden Befehl übergeben.
Im Beispiel unten ist bei jeder Iteration der aktuelle Wert der Variablen i
wird gedruckt und um eins erhöht.
i=0
while [ $i -le 2 ]
do
echo Number: $i
((i++))
done
Tue loop iteriert solange i
kleiner oder gleich zwei ist. Es wird die folgende Ausgabe erzeugt:
Number: 0
Number: 1
Number: 2
Unendliches while
Schleife #
Eine Endlosschleife ist eine Schleife, die sich endlos wiederholt und niemals endet. Wenn die Bedingung immer wahr ist, erhalten Sie eine Endlosschleife.
Im folgenden Beispiel verwenden wir den eingebauten Befehl :
um eine Endlosschleife zu erstellen. :
gibt immer true zurück. Sie können auch true
verwenden eingebaute oder jede andere Anweisung, die immer wahr zurückgibt.
while :
do
echo "Press <CTRL+C> to exit."
sleep 1
done
Das while
Schleife oben läuft auf unbestimmte Zeit. Sie können die Schleife beenden, indem Sie CTRL+C
drücken .
Hier ist ein einzeiliges Äquivalent:
while :; do echo 'Press <CTRL+C> to exit.'; sleep 1; done
Lesen Sie eine Datei Zeile für Zeile #
Eine der häufigsten Verwendungen von while
Schleife besteht darin, eine Datei, einen Datenstrom oder eine Variable Zeile für Zeile zu lesen.
Hier ist ein Beispiel, das /etc/passwd
liest Datei Zeile für Zeile und druckt jede Zeile:
file=/etc/passwd
while read -r line; do
echo $line
done < "$file"
Anstatt das while
zu steuern Schleife mit einer Bedingung verwenden wir eine Eingabeumleitung (< "$file"
), um eine Datei an read
zu übergeben Befehl, der die Schleife steuert. Das while
Die Schleife wird ausgeführt, bis die letzte Zeile gelesen ist.
Wenn Sie eine Datei zeilenweise lesen, verwenden Sie immer read
mit dem -r
Option, um zu verhindern, dass der Backslash als Escape-Zeichen fungiert.
Standardmäßig wird der read
Der Befehl schneidet die führenden/nachgestellten Leerzeichen (Leerzeichen und Tabulatoren) ab. Verwenden Sie das IFS=
Option vor read
um dieses Verhalten zu verhindern:
file=/etc/passwd
while IFS= read -r line; do
echo $line
done < "$file"
break
und continue
Anweisungen #
Die break
und continue
Anweisungen können verwendet werden, um die Ausführung der While-Schleife zu steuern.
break
Anweisung #
Die break
-Anweisung beendet die aktuelle Schleife und übergibt die Programmsteuerung an den Befehl, der auf die beendete Schleife folgt. Es wird normalerweise verwendet, um die Schleife zu beenden, wenn eine bestimmte Bedingung erfüllt ist.
Im folgenden Beispiel wird die Ausführung der Schleife unterbrochen, sobald das aktuelle iterierte Element gleich 2
ist .
i=0
while [ $i -lt 5 ]
do
echo "Number: $i"
((i++))
if [[ "$i" == '2' ]]; then
break
fi
done
echo 'All Done!'
Number: 0
Number: 1
All Done!
continue
Anweisung #
Der continue
-Anweisung verlässt die aktuelle Iteration einer Schleife und übergibt die Programmsteuerung an die nächste Iteration der Schleife.
Im Folgenden ist einmal das aktuelle iterierte Element gleich 2
continue
-Anweisung bewirkt, dass die Ausführung zum Anfang der Schleife zurückkehrt und mit der nächsten Iteration fortfährt.
i=0
while [ $i -lt 5 ]
do
((i++))
if [[ "$i" == '2' ]]; then
continue
fi
echo "Number: $i"
done
echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!
Schlussfolgerung #
Das while
Schleife führt wiederholt einen bestimmten Satz von Befehlen aus, solange eine Bedingung wahr ist.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.