Until
Version vom 17. Oktober 2025, 15:25 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= until-Schleifen = *Die until-Schleife ist das Gegenstück zur while-Schleife.* *Sie führt ihre Befehle so lange aus, bis eine bestimmte Bedingung erfüllt…“)
until-Schleifen
- Die until-Schleife ist das Gegenstück zur while-Schleife.*
- Sie führt ihre Befehle so lange aus, bis eine bestimmte Bedingung erfüllt ist.*
- Während die while-Schleife läuft, solange die Bedingung WAHR ist (Exit-Status = 0), läuft die until-Schleife, solange die Bedingung FALSCH ist (Exit-Status ≠ 0).*
Grundprinzip
- Bei jeder Iteration wird die Bedingung geprüft.*
- Solange der Rückgabewert (Exit-Status) ungleich 0 ist, wird der Schleifenrumpf ausgeführt.*
- Erst wenn der Exit-Status 0 zurückgibt, endet die Schleife.*
Syntax
until [ Bedingung ]; do Befehle done
Beispiel – Zählerschleife
- Einfaches Beispiel, das solange läuft, bis die Variable 5 erreicht.*
ZAHL=1 until [ $ZAHL -gt 5 ]; do echo "Zahl: $ZAHL" ZAHL=$((ZAHL+1)) done
Ausgabe: Zahl: 1 Zahl: 2 Zahl: 3 Zahl: 4 Zahl: 5
Beispiel – Wartebedingung
- Die until-Schleife kann auch verwendet werden, um zu warten, bis eine Bedingung erfüllt ist.*
- Hier wird gewartet, bis eine bestimmte Datei existiert.*
until [ -f /tmp/ready.flag ]; do echo "Warte auf Datei /tmp/ready.flag..." sleep 2 done echo "Datei gefunden, weiter geht’s."
Beispiel – Mit Exit-Status prüfen
- Wie bei der while-Schleife basiert auch die until-Schleife auf dem Rückgabewert von Befehlen.*
- Sie läuft, solange der Exit-Code ≠ 0 ist.*
ping -c1 10.0.0.1 > /dev/null 2>&1 echo $? 0
until ping -c1 10.0.0.1 > /dev/null 2>&1; do echo "Host noch nicht erreichbar..." sleep 5 done echo "Host antwortet!"
Beispiel – Datei zeilenweise prüfen
- Die until-Schleife kann ebenfalls mit Eingabedateien kombiniert werden.*
- Das folgende Beispiel wartet, bis eine Datei nicht mehr leer ist.*
until [ -s /tmp/log.txt ]; do echo "Datei /tmp/log.txt ist leer – warte..." sleep 3 done echo "Datei enthält nun Daten."
Hinweise
- while-Schleife → läuft solange Bedingung WAHR ist (Exit-Code = 0)
- until-Schleife → läuft solange Bedingung FALSCH ist (Exit-Code ≠ 0)
- Beide Schleifenarten verwenden die gleiche Syntaxstruktur.
- Mit "break" kann eine Schleife jederzeit beendet werden.
- Mit "continue" kann der aktuelle Durchlauf übersprungen werden.
Aufgaben
- Erstellen Sie eine until-Schleife, die von 1 bis 5 zählt und bei 5 endet.
- Schreiben Sie ein Skript, das wartet, bis eine Datei "/tmp/trigger" existiert.
- Erstellen Sie ein Skript, das mit until wartet, bis ein Host erreichbar ist (ping).
- Fügen Sie nach jedem Schleifendurchlauf eine Ausgabe des Rückgabewerts ("echo $?") hinzu.