Bis zum Schleifen schlagen

Bis zum Schleifen schlagen
Es gibt verschiedene Arten von Schleifen, die in Bash -Skripten verwendet werden können. Für Schleifen, während Schleifen und bis zu Loops.

Konzeptuell sollte die für die Schleife verwendet werden, um eine Reihe von Elementen wie die Schleife durch jedes Element in einem Array oder jede Datei in einem Verzeichnis usw. durchzuführen. Die while -Schleife sollte verwendet werden, solange eine bestimmte Bedingung wahr ist, z.

Die bis zur Schleife ähnelt der while -Schleife, jedoch mit umgekehrter Logik. Anstatt zu schleifen, während eine Bedingung wahr ist, gehen Sie davon aus. Sie sind im logischen Ausdruck umgekehrt voneinander. Durch die Auswahl der richtigen Schleife zwischen einer Weile und bis zur Schleife kann Ihr Programm von anderen oder sich selbst lesbarer und verständlicher sein, wenn Sie irgendwann später zum Code zurückkehren.

Einige typische Beispiele oder Gründe für die Verwendung einer bis zur Schleife sein könnten, schleifen Sie Schleifen, bis der Benutzer "Beenden" eingeht. Schleife, bis die generierten Daten größer sind als das angeforderte Datenvolumen oder bis eine Reihe von Dateien, die mit Ihrer Suche übereinstimmen.

Die grundlegende Syntax von bis zur Schleife sieht folgendermaßen aus:

bis [Zustand]; Tun
ZEILEN VON CODE
Weitere Codezeilen
Erledigt

Nehmen wir nun einige Beispiele. Das erste Beispiel wird mehrfach zwei Faktor von zwei Faktoren bis zur Erreichung einer Größenschwelle von 1000:

#!/Bin/Bash
Num = 1
bis ["$ num" -Gt 1000]; Tun
echo $ num
sei num = num*2
Erledigt

Das zweite Beispiel wird weiterhin eine URL pingen, bis die Reaktionszeit größer als 100 Millisekunden beträgt:

#!/Bin/Bash
Millisekunden = 0
# Wir werden pingen, bis es langsamer wird als 1000 Millisekunden
Bis [$ Millisekunden -GT 1000]
Tun
# Führen Sie den Ping aus und extrahieren Sie die Linie mit der Pingzeit, die in der Zeit endet = xxxx ms
Output = 'ping -c 1 Google.com | Grep -Zeit | awk -f = 'print $ nf' ''
Echo "Ping Time: $ Output"
# Die Anzahl der Milliseocnds aus der String als Ganzzahl extrahieren
Milliseconds = 'echo $ output | awk 'print $ 1' | awk -f. 'print $ 1' '' '
echo "Anzahl von MS = $ Millisekunden"
Schlaf 1
Erledigt
Echo "Ping -Zeit überschritt 1000 Millisekunden"

Das dritte Beispiel nimmt eine Datei ein und kombiniert die Datei mit sich selbst, bis sie 1 Kilobyte in Größe erreicht:

#!/Bin/Bash
Dateiname = 'Basename "$ 0"'
Echo $ Dateiname
Tmp_file = "./tmp1 "
Target_file = "./Ziel"
Cat $ Dateiname> $ target_file
Filesize = 0
# Die Dateigröße bis 1 KB erhöhen
bis [$ filesize -GT 1024]
Tun
# Fügen Sie diese Datei hinzu, um Dateiinhalt zu zielen
CP $ target_file $ tmp_file
cat $ tmp_file >> $ target_file
FileSize = 'du $ target_file | awk 'print $ 1' ''
echo "filesize: $ filesize"
Schlaf 1
Erledigt
Echo "Neues Filegröße erreicht das Ziel von 1 KB"

Das vierte Beispiel wird den Benutzer um die Eingabe seines Namens auffordern, bis er Beenden eingeben, um das Programm zu beenden:

#!/Bin/Bash
Response = "foo"
# Die Dateigröße bis 1 KB erhöhen
bis ["$ response" = "exit"]
Tun
echo -n "Geben Sie Ihren Namen ein oder" Beenden Sie ", um dieses Programm zu beenden:"
Antwort lesen
Wenn ["$ response" != "exit"]; Dann
echo "Hallo $ Antwort"
fi
Erledigt
Echo "Danke, dass du dieses Spiel gespielt hast"

ABSCHLUSS

Der entscheidende Punkt ist die Verwendung BIS Schleife, um Ihren Code klarer zu machen, wenn von der Bedingung erwartet wird, dass sie immer falsch ist, und dann möchten Sie Ihre Schleifenaktion stoppen, wenn die Bedingung wahr wird. Mit anderen Worten, weiterschleifen BIS irgendwann Zeitpunkt. Mit dieser Perspektive hoffe ich, dass Ihre Bash -Skripte klarer sein können und Sie mit diesem Artikel etwas gelernt haben. Danke.