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.