GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash-while-Schleife

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.


Linux
  1. Wie schreibe ich eine Schleife in Bash?

  2. Bash For Loop Guide und Beispiele

  3. Eine Bash-For-Schleife parallelisieren?

  4. Verwendung von und in der Bash-While-Schleife

  5. Warum wird eine Bash-While-Schleife nicht beendet, wenn sie zu einem beendeten Unterbefehl weitergeleitet wird?

Bash für Schleife

Bash bis Loop

Bash brechen und fortfahren

Bash-Skripting – While- und Until-Schleife mit Beispielen erklärt

Die While-Schleife in Shell-Skripten

Die Bash FOR-Schleife erklärt und vereinfacht