Until: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(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…“) |
|||
| Zeile 11: | Zeile 11: | ||
== Syntax == | == Syntax == | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | until [ Bedingung ] | |
| − | + | do | |
| + | Befehle | ||
| + | done | ||
| + | </syntaxhighlight> | ||
== Beispiel – Zählerschleife == | == Beispiel – Zählerschleife == | ||
*Einfaches Beispiel, das solange läuft, bis die Variable 5 erreicht.* | *Einfaches Beispiel, das solange läuft, bis die Variable 5 erreicht.* | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | ZAHL=1 | |
| − | + | until [ $ZAHL -gt 5 ] | |
| − | + | do | |
| − | + | echo "Zahl: $ZAHL" | |
| + | ZAHL=$((ZAHL+1)) | ||
| + | done | ||
| + | </syntaxhighlight> | ||
Ausgabe: | Ausgabe: | ||
| Zeile 35: | Zeile 41: | ||
*Hier wird gewartet, bis eine bestimmte Datei existiert.* | *Hier wird gewartet, bis eine bestimmte Datei existiert.* | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | until [ -f /tmp/ready.flag ] | |
| − | + | do | |
| − | + | echo "Warte auf Datei /tmp/ready.flag..." | |
| − | + | sleep 2 | |
| + | done | ||
| + | echo "Datei gefunden, weiter geht’s." | ||
| + | </syntaxhighlight> | ||
== Beispiel – Mit Exit-Status prüfen == | == Beispiel – Mit Exit-Status prüfen == | ||
| Zeile 45: | Zeile 54: | ||
*Sie läuft, solange der Exit-Code ≠ 0 ist.* | *Sie läuft, solange der Exit-Code ≠ 0 ist.* | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | 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!" | ||
| + | </syntaxhighlight> | ||
== Beispiel – Datei zeilenweise prüfen == | == Beispiel – Datei zeilenweise prüfen == | ||
| Zeile 59: | Zeile 71: | ||
*Das folgende Beispiel wartet, bis eine Datei nicht mehr leer ist.* | *Das folgende Beispiel wartet, bis eine Datei nicht mehr leer ist.* | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | until [ -s /tmp/log.txt ] | |
| − | + | do | |
| − | + | echo "Datei /tmp/log.txt ist leer – warte..." | |
| − | + | sleep 3 | |
| + | done | ||
| + | echo "Datei enthält nun Daten." | ||
| + | </syntaxhighlight> | ||
== Hinweise == | == Hinweise == | ||
| − | * while-Schleife → läuft solange Bedingung WAHR ist (Exit-Code = 0) | + | * while-Schleife → läuft solange Bedingung WAHR ist (Exit-Code = 0) |
| − | * until-Schleife → läuft solange Bedingung FALSCH ist (Exit-Code ≠ 0) | + | * until-Schleife → läuft solange Bedingung FALSCH ist (Exit-Code ≠ 0) |
| − | * Beide Schleifenarten verwenden die gleiche Syntaxstruktur. | + | * Beide Schleifenarten verwenden die gleiche Syntaxstruktur. |
| − | * Mit | + | * Mit '''break''' kann eine Schleife jederzeit beendet werden. |
| − | * Mit | + | * Mit '''continue''' kann der aktuelle Durchlauf übersprungen werden. |
| + | * Der aktuelle Rückgabewert kann mit '''echo $?''' angezeigt werden. | ||
== Aufgaben == | == Aufgaben == | ||
| − | * Erstellen Sie eine until-Schleife, die von 1 bis 5 zählt und bei 5 endet. | + | * 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 | + | * 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). | + | * 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 | + | * Fügen Sie nach jedem Schleifendurchlauf eine Ausgabe des Rückgabewerts mit '''echo $?''' hinzu. |
Version vom 17. Oktober 2025, 15:31 Uhr
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.
- Der aktuelle Rückgabewert kann mit echo $? angezeigt 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 mit echo $? hinzu.