Bash 'Until' Loop: Tutorial und Beispiele

Verwenden einer „until“-Schleife in einem Bash-Skript, 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 noch bis Schleife in Bash.

Einführung

Der noch bis 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 weiterhin fehlschlägt (d. h. einen Status ungleich null zurückgibt. Jeder Befehl in Linux gibt 0 für Erfolg und eine ganze Zahl ungleich null für Fehler zurück). Das ist genau das Gegenteil von während Schleife, in der die ausgeführten Befehle so lange ausgeführt werden, bis der Bedingungsbefehl erfolgreich ist.

Wenn es mehrere Bedingungsbefehle gibt, 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 weiterhin fehlschlägt.

Allgemeine Syntax

Die allgemeine Syntax für noch bis Schleife in Bash ist:

bis fertig

Die Ausführungsbefehlsliste wird ausgeführt, bis der letzte Befehl in der Bedingungsbefehlsliste fehlschlägt. Sobald der letzte Befehl erfolgreich ist, wird die Schleife beendet.

Benutzer können 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 10.

x=0 bis [[ $x -eq 10 ]] 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).

Dann in der tun getan block, geben wir einfach den Wert von x aus und inkrementieren ihn. Die Schleife wird beendet, wenn der Bedingungsbefehl erfolgreich ist, d. h. wenn $x ist gleich 10.

Notiz: Die in der 'until'-Schleife zu verwendende Indexvariable muss entweder vor der 'until'-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 bis echo "Hi" echo "Tschüss" [[ $z -eq 5 ]] do echo "Erzeuge dir$z..." mkdir dir$z ((z++)) fertig

Die ersten Befehle echo „Hi“ und echo „Bye“ werden einmal komplett 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 dieser Befehl weiterhin fehlschlägt, d. h. bis der Wert von z 5 beträgt, werden die Bedingungsbefehle und ausgeführten Befehle der Reihe nach ausgeführt. Hier werden für jede Iteration zuerst die 2 Echobefehle in der Bedingung ausgeführt und dann die Prüfung des dritten Bedingungsbefehls auf den Wert von z. 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 eine Anweisung für ein bedingtes Verlassen der Schleife.

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

Die obige until-Schleife gibt Zahlen von 0 bis 4 aus. Wenn der Wert von i 5 beträgt, 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 bis [[ $x -eq 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 noch bis 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 noch bis loop ist ein weiteres wichtiges Feature bei der Bash-Skripterstellung. Dies ist insbesondere in komplexen Skripten wichtig, wenn von einer bestimmten Gruppe von Programmen erwartet wird, dass sie den Fehlerstatus zurückgeben, und einige andere Befehle ausgeführt werden sollen, um den Fehler zu protokollieren, Fehler detailliert anzuzeigen oder einfach alternative Programme auszuführen.