Android

Bash while-Schleife

BASH Scripting Lesson 5 using WHILE loops

BASH Scripting Lesson 5 using WHILE loops

Inhaltsverzeichnis:

Anonim

Schleifen sind eines der grundlegenden Konzepte von Programmiersprachen. Schleifen sind praktisch, wenn Sie eine Reihe von Befehlen so oft ausführen möchten, bis eine bestimmte Bedingung erfüllt ist.

In Skriptsprachen wie Bash sind Schleifen hilfreich, um sich wiederholende Aufgaben zu automatisieren. In Bash-Skripten gibt es drei grundlegende Schleifenkonstrukte: for loop, while loop und until loop.

Dieses Tutorial erklärt die Grundlagen von while-Schleifen in Bash sowie die break and continue-Anweisungen, um den Ablauf einer Schleife zu ändern.

Bash while Loop

Die while-Schleife wird verwendet, um eine bestimmte Menge von Befehlen in unbekannter Anzahl auszuführen, solange die angegebene Bedingung als wahr ausgewertet wird.

Die Bash while-Schleife hat folgende Form:

while do done

Die Bedingung wird vor dem Ausführen der Befehle ausgewertet. Wenn die Bedingung als wahr ausgewertet wird, werden Befehle ausgeführt. Andernfalls wird die Schleife beendet und die Programmsteuerung an den folgenden Befehl übergeben, wenn die Bedingung als falsch ausgewertet wird.

Im folgenden Beispiel gibt die Schleife bei jeder Iteration den aktuellen Wert der Variablen i und erhöht die Variable um eins.

i=0 while do echo Number: $i ((i++)) done

Die Schleife wird wiederholt, solange i kleiner oder gleich zwei ist. Es wird die folgende Ausgabe erzeugen:

Number: 0 Number: 1 Number: 2

Endlos während Loop

Eine Endlosschleife ist eine Schleife, die sich auf unbestimmte Zeit wiederholt und niemals endet. Wenn die Bedingung immer true ergibt, erhalten Sie eine Endlosschleife.

Im folgenden Beispiel verwenden wir den eingebauten Befehl : der immer true zurückgibt, um eine Endlosschleife zu erstellen. Sie können auch den integrierten Befehl true oder eine andere Anweisung verwenden, die immer true zurückgibt.

while: do echo "Press to exit." sleep 1 done while: do echo "Press to exit." sleep 1 done

Die obige while-Schleife wird auf unbestimmte Zeit ausgeführt. Sie können die Schleife beenden, indem Sie CTRL+C drücken.

Hier ist ein einzeiliges Äquivalent:

while:; do echo 'Press to exit.'; sleep 1; done while:; do echo 'Press to exit.'; sleep 1; done

Lesen Sie eine Datei Zeile für Zeile

Eine der häufigsten Anwendungen der while-Schleife ist das zeilenweise Lesen einer Datei, eines Datenstroms oder einer Variablen.

Im folgenden Beispiel liest die while-Schleife die Datei /etc/passwd zeilenweise und gibt jede Zeile aus.

file=/etc/passwd while read -r line; do echo $line done < "$file"

Anstatt die while-Schleife mit einer Bedingung zu steuern, verwenden wir die Eingabeumleitung ( < "$file" ), um eine Datei an den read Befehl zu übergeben, der die Schleife steuert. Die while-Schleife wird ausgeführt, bis die letzte Zeile gelesen wurde.

Verwenden read beim zeilenweisen Lesen von Dateien immer read mit der Option -r , um zu verhindern, dass ein Backslash als Escape-Zeichen verwendet wird.

Der Befehl read schneidet standardmäßig die führenden / nachfolgenden Leerzeichen (Leerzeichen und Tabulatoren) ab. Verwenden Sie die Option IFS= vor dem Befehl read , um dieses Verhalten zu verhindern

file=/etc/passwd while IFS= read -r line; do echo $line done < "$file"

Anweisungen unterbrechen und fortsetzen

Mit den Anweisungen break und continue kann die Ausführung der while-Schleife gesteuert werden.

Break-Anweisung

Die break-Anweisung beendet die aktuelle Schleife und übergibt die Programmsteuerung an den Befehl, der auf die terminierte 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 aktuell iterierte Element gleich 2 .

i=0 while do echo "Number: $i" ((i++)) if]; then break fi done echo 'All Done!'

Number: 0 Number: 1 All Done!

Continue-Anweisung

Die continue-Anweisung beendet die aktuelle Iteration einer Schleife und übergibt die Programmsteuerung an die nächste Iteration der Schleife.

Im Folgenden bewirkt die continue-Anweisung, dass die Ausführung an den Anfang der Schleife zurückkehrt und mit der nächsten Iteration fortgesetzt wird, sobald das aktuelle iterierte Element gleich 2 .

i=0 while do ((i++)) if]; then continue fi echo "Number: $i" done echo 'All Done!'

Number: 1 Number: 3 Number: 4 Number: 5 All Done!

Fazit

Inzwischen sollten Sie ein gutes Verständnis für die Verwendung der Bash While-Schleife haben.

Bash-Loop-Terminal