Until: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
= until-Schleifen = | = until-Schleifen = | ||
| − | *Die until-Schleife ist das Gegenstück zur while-Schleife. | + | *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. | + | *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). | + | *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 == | == Grundprinzip == | ||
| − | *Bei jeder Iteration wird die Bedingung geprüft. | + | *Bei jeder Iteration wird die Bedingung geprüft. |
| − | *Solange der Rückgabewert (Exit-Status) ungleich 0 ist, wird der Schleifenrumpf ausgeführt. | + | *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. | + | *Erst wenn der Exit-Status 0 zurückgibt, endet die Schleife. |
== Syntax == | == Syntax == | ||
| Zeile 19: | Zeile 19: | ||
== 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"> | <syntaxhighlight lang="bash"> | ||
| Zeile 38: | Zeile 38: | ||
== Beispiel – Wartebedingung == | == Beispiel – Wartebedingung == | ||
| − | *Die until-Schleife kann auch verwendet werden, um zu warten, bis eine Bedingung erfüllt ist. | + | *Die until-Schleife kann auch verwendet werden, um zu warten, bis eine Bedingung erfüllt ist. |
| − | *Hier wird gewartet, bis eine bestimmte Datei existiert. | + | *Hier wird gewartet, bis eine bestimmte Datei existiert. |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| Zeile 51: | Zeile 51: | ||
== Beispiel – Mit Exit-Status prüfen == | == Beispiel – Mit Exit-Status prüfen == | ||
| − | *Wie bei der while-Schleife basiert auch die until-Schleife auf dem Rückgabewert von Befehlen. | + | *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. | + | *Sie läuft, solange der Exit-Code ≠ 0 ist. |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| Zeile 68: | Zeile 68: | ||
== Beispiel – Datei zeilenweise prüfen == | == Beispiel – Datei zeilenweise prüfen == | ||
| − | *Die until-Schleife kann ebenfalls mit Eingabedateien kombiniert werden. | + | *Die until-Schleife kann ebenfalls mit Eingabedateien kombiniert werden. |
| − | *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"> | <syntaxhighlight lang="bash"> | ||
| Zeile 81: | Zeile 81: | ||
== 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 '''break''' kann eine Schleife jederzeit beendet werden. | + | * Mit '''break''' kann eine Schleife jederzeit beendet werden. |
| − | * Mit '''continue''' kann der aktuelle Durchlauf übersprungen werden. | + | * Mit '''continue''' kann der aktuelle Durchlauf übersprungen werden. |
| − | * Der aktuelle Rückgabewert kann mit '''echo $?''' angezeigt werden. | + | * Der aktuelle Rückgabewert kann mit '''echo $?''' angezeigt werden. |
== Aufgaben == | == Aufgaben == | ||
| − | * Erstellen Sie eine until-Schleife, die | + | == Aufgaben == |
| − | * Schreiben Sie | + | * Erstellen Sie eine until-Schleife, die wartet, bis im Verzeichnis /tmp mindestens eine Datei mit der Endung .done liegt. |
| − | * | + | * Schreiben Sie eine until-Schleife, die erst endet, wenn der Befehl systemctl is-active ssh einen Exit-Status 0 liefert. |
| − | + | * Erstellen Sie eine until-Schleife, die so lange läuft, bis die Variable ZÄHLER den Wert 10 erreicht hat, wobei der Startwert aus einer Datei /tmp/startwert gelesen wird. | |
| + | * Schreiben Sie eine until-Schleife, die so lange läuft, bis der Befehl id -u backup fehlschlägt (Benutzer wurde gelöscht), und geben Sie danach „Benutzer entfernt“ aus. | ||
Aktuelle Version vom 25. November 2025, 15:43 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
Aufgaben
- Erstellen Sie eine until-Schleife, die wartet, bis im Verzeichnis /tmp mindestens eine Datei mit der Endung .done liegt.
- Schreiben Sie eine until-Schleife, die erst endet, wenn der Befehl systemctl is-active ssh einen Exit-Status 0 liefert.
- Erstellen Sie eine until-Schleife, die so lange läuft, bis die Variable ZÄHLER den Wert 10 erreicht hat, wobei der Startwert aus einer Datei /tmp/startwert gelesen wird.
- Schreiben Sie eine until-Schleife, die so lange läuft, bis der Befehl id -u backup fehlschlägt (Benutzer wurde gelöscht), und geben Sie danach „Benutzer entfernt“ aus.