Bash 'While' Loop: Tutorial und Beispiele

Verwenden einer "while"-Schleife in Bash-Skripten, um Befehle zu durchlaufen.

Bash (Bourne Again Shell) ist eine Shell-Eingabeaufforderung und Skriptsprache in GNU/Linux-Betriebssystemen. Es ist die Standard-Shell für die meisten Linux-Distributionen.

Wie die meisten Skriptsprachen bietet Bash Schleifensyntaxen, um ähnliche Aufgaben mehrmals zu wiederholen. In diesem Artikel erfahren Sie, wie Sie die während Schleife in Bash.

Einführung

Der während Schleife in Bash wird verwendet, um Befehle (ausgeführte Befehle) mehrmals auszuführen, basierend auf der Ausgabe eines anderen Befehls oder anderer Befehle (Bedingungsbefehle). Die ausgeführten Befehle werden so lange ausgeführt, bis der Bedingungsbefehl erfolgreich ausgeführt wird (d. h. den Status 0 zurückgibt. Jeder Befehl in Linux gibt 0 für Erfolg und eine ganze Zahl ungleich Null für Fehler zurück).

Bei mehreren Bedingungsbefehlen berücksichtigt die Anweisung nur den Status des letzten Befehls in der Liste, d. h. die Schleife wird ausgeführt, bis der letzte Befehl in der Liste erfolgreich ausgeführt wird.

Allgemeine Syntax

Die allgemeine Syntax für während Schleife in Bash ist:

solange fertig

Die Ausführungsbefehlsliste läuft weiter, bis der letzte Befehl in der Bedingungsbefehlsliste erfolgreich ausgeführt und mit dem Status 0 beendet wird. In der Iteration wird die Schleife beendet, wenn der letzte Bedingungsbefehl fehlschlägt.

Der Benutzer kann jede ausführbare Datei in den Befehlslisten angeben. Dabei kann es sich um Standard-Linux-Programme oder benutzerdefinierte Benutzerprogramme oder Skripte handeln. Jeder Befehl sollte entweder in einer neuen Zeile stehen oder durch ein Semikolon in derselben Zeile getrennt sein.

Sehen wir uns einige Beispiele an.

Schleifen, bis eine Variable einen bestimmten Wert hat: Die folgende Schleife wird ausgeführt, bis der Wert der Variablen x ist nicht gleich 10.

x=0 while [[ $x -ne 10 ]] tun echo $x ((x++)) erledigt

In jeder Iteration prüfen wir, ob der Wert von x 10 ist. Der Wert wird mit dem Prüfung Befehl. [[ Ausdruck ]] ist die Syntax für den Testbefehl (Siehe Mann test). Hier, da wir die verwenden -ne Operator (der für „ungleich“ steht), gibt der Testbefehl 0 zurück, d. h. Erfolg, wenn der Wert von x ungleich 10 ist, und gibt einen Wert ungleich Null zurück, d. h. Fehler, wenn der Wert von x 10 beträgt.

Dann in der tun getan block, geben wir den Wert von x aus und inkrementieren ihn. Sobald der Wert von x 10 beträgt, gibt der Testbefehl einen Nicht-Null-Status zurück und die Schleife wird beendet.

Notiz: Die in der while-Schleife zu verwendende Indexvariable muss entweder vor der while-Schleife oder in den Bedingungsbefehlen initialisiert werden, im Gegensatz zur for-Schleife, die es ermöglicht, eine Variable implizit zu initialisieren.

Mit mehreren Bedingungsbefehlen: Die folgende Schleife erstellt 5 Verzeichnisse namens dir0, dir1, ... dir4.

z=0 while echo "Liste der Dateien:" ls -l [[ $z -ne 5 ]] do echo "Erzeuge dir$z..." mkdir dir$z ((z++)) done

Erste Befehle echo "Liste der Dateien:" und ls -l wird einmal vollständig ausgeführt; Ihr Erfolg oder Misserfolg hat keinerlei Einfluss auf die Dauer der Schleife.

Dann wird der Testbefehl zum Prüfen des Wertes der Variablen z ausgeführt. Bis der Wert von z nicht 5 ist, gibt der Testbefehl den Erfolgsstatus zurück und die Schleife läuft daher weiter. Die Bedingungsbefehle und ausgeführten Befehle laufen der Reihe nach weiter. Hier wird es für jede Iteration zuerst den echo-Befehl und den ls-Befehl in der Bedingung ausführen und dann den dritten Bedingungsbefehl auf den Wert von z prüfen. Wenn es nicht 5 ist, tritt es in die Schleife ein und führt die gegebenen Befehle aus.

Pause und weiter

Break-Anweisung für bedingten Exit

Wir können auch die bedingte Anweisung verwenden wenn innerhalb der Schleife. Der wenn Anweisung kann mit a . verwendet werden brechen -Anweisung für ein bedingtes Verlassen der Schleife.

x=0 while [[ $x -ne 10 ]] do if [[ $x -eq 5 ]] break fi echo $x ((x++)) done

Die obige while-Schleife gibt Zahlen von 0 bis 4 aus. Wenn der Wert von i 5 ist, wird die Schleife verlassen. Dies ist insbesondere dann von Nutzen, wenn eine Schleife verlassen werden soll, wenn ein Befehl eine bestimmte Ausgabe liefert.

Anweisung fortsetzen, um eine Iteration bedingt zu überspringen

Bash hat auch eine Fortfahren -Anweisung, um den verbleibenden Teil einer Iteration in einer Schleife zu überspringen, wenn eine bestimmte Bedingung erfüllt ist.

x=0 while [[ $x -ne 10 ]] do if [[ $x -eq 5 ]] weiter fi echo $x ((x++)) done

Die obige Schleife gibt Zahlen von 0 bis 10 aus, außer 5, da während der Iteration von x=5 es gibt eine Continue-Anweisung, die den Rest des Codes in der Schleife am Anfang mit der Iteration von . überspringt x=6.

Schleifen verwenden: Skripte und Befehlszeile

Die Schleifensyntaxen können direkt in der Bash-Shell oder aus einer ausführbaren Shell-Skriptdatei verwendet werden. Ähnlich zu Pro und während Schleifen, einmal und während Loop-Syntax auf der Shell eingegeben wird, setzt die Shell die Eingabeaufforderung fort, damit der Benutzer die zu wiederholenden Befehle fortsetzen kann.

Oder der Benutzer kann dies in einer Skriptdatei speichern und die Skriptdatei ausführen.

Der #!/bin/bash at the start gibt den Interpreter an, der bei der Ausführung der Datei verwendet werden soll. Obwohl Bash heutzutage die am häufigsten verwendete Shell ist, bevorzugen einige Benutzer Shells wie zsh, die anstelle von bash am Anfang dieser Datei angegeben werden sollte.

Ausführungsberechtigungen erteilen Führen Sie für diese Datei Folgendes aus:

chmod +x test.sh

Endlich, die Datei ausführen, Lauf:

./test.sh

Fazit

Der während Schleife, ähnlich wie Pro und noch bis Schleifen sind ein wichtiges Feature bei der Bash-Skripterstellung. Die While-Schleife hat eine ähnliche Verwendung wie die until-Schleife, außer dass sie verwendet wird, um alternative Befehle/Programme auszuführen, wenn ein bestimmtes Programm erfolgreich ist. Dies findet oft seinen Nutzen in erweiterten Netzwerkskripten, Systemwartungsskripten usw.