Vorzeitiger Abbruch: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „= Kontrollbefehle in Schleifen und Skripten (break, continue, exit) = *Die Bash stellt spezielle Steuerbefehle bereit, um den Ablauf von Schleifen oder ganzen…“) |
|||
| Zeile 1: | Zeile 1: | ||
= Kontrollbefehle in Schleifen und Skripten (break, continue, exit) = | = Kontrollbefehle in Schleifen und Skripten (break, continue, exit) = | ||
| − | *Die Bash stellt spezielle Steuerbefehle bereit, um den Ablauf von Schleifen oder ganzen Skripten gezielt zu beeinflussen. | + | *Die Bash stellt spezielle Steuerbefehle bereit, um den Ablauf von Schleifen oder ganzen Skripten gezielt zu beeinflussen. |
| − | *Dazu gehören insbesondere die Kommandos '''break''', '''continue''' und '''exit'''. | + | *Dazu gehören insbesondere die Kommandos '''break''', '''continue''' und '''exit'''. |
== break == | == break == | ||
| − | *Mit '''break''' wird die aktuelle Schleife sofort beendet, auch wenn die Abbruchbedingung noch nicht erfüllt ist. | + | *Mit '''break''' wird die aktuelle Schleife sofort beendet, auch wenn die Abbruchbedingung noch nicht erfüllt ist. |
| − | *Nach dem Abbruch setzt das Skript mit der nächsten Anweisung nach der Schleife fort. | + | *Nach dem Abbruch setzt das Skript mit der nächsten Anweisung nach der Schleife fort. |
;Beispiel – Schleife abbrechen bei bestimmtem Wert | ;Beispiel – Schleife abbrechen bei bestimmtem Wert | ||
| Zeile 33: | Zeile 33: | ||
Schleife beendet. | Schleife beendet. | ||
| − | *Mit einem numerischen Argument kann '''break''' mehrere Ebenen verschachtelter Schleifen gleichzeitig verlassen. | + | *Mit einem numerischen Argument kann '''break''' mehrere Ebenen verschachtelter Schleifen gleichzeitig verlassen. |
;Beispiel – zweifach verschachtelt | ;Beispiel – zweifach verschachtelt | ||
| Zeile 52: | Zeile 52: | ||
== continue == | == continue == | ||
| − | *Mit '''continue''' wird der aktuelle Schleifendurchlauf sofort beendet. | + | *Mit '''continue''' wird der aktuelle Schleifendurchlauf sofort beendet. |
| − | *Die Schleife selbst läuft weiter – der nächste Durchlauf beginnt sofort. | + | *Die Schleife selbst läuft weiter – der nächste Durchlauf beginnt sofort. |
;Beispiel – bestimmte Werte überspringen | ;Beispiel – bestimmte Werte überspringen | ||
| Zeile 78: | Zeile 78: | ||
== exit == | == exit == | ||
| − | *Der Befehl '''exit''' beendet das gesamte Skript (nicht nur eine Schleife). | + | *Der Befehl '''exit''' beendet das gesamte Skript (nicht nur eine Schleife). |
| − | *Dabei kann ein Exit-Status angegeben werden, der an den aufrufenden Prozess zurückgegeben wird. | + | *Dabei kann ein Exit-Status angegeben werden, der an den aufrufenden Prozess zurückgegeben wird. |
| − | *Ein Exit-Status von 0 bedeutet Erfolg, ein anderer Wert signalisiert Fehler. | + | *Ein Exit-Status von 0 bedeutet Erfolg, ein anderer Wert signalisiert Fehler. |
;Beispiel – Skript mit Exit-Status | ;Beispiel – Skript mit Exit-Status | ||
| Zeile 95: | Zeile 95: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | *Der Rückgabewert eines beendeten Skripts kann in der Shell mit folgendem Befehl geprüft werden: | + | *Der Rückgabewert eines beendeten Skripts kann in der Shell mit folgendem Befehl geprüft werden: |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| Zeile 113: | Zeile 113: | ||
== Aufgaben == | == Aufgaben == | ||
| − | * Schreiben Sie eine | + | * Schreiben Sie eine Schleife, die alle Dateien in /var/log durchgeht und beim ersten Treffer größer als 1 MB mit '''break''' beendet. |
| − | * | + | * Erstellen Sie eine Schleife, die Zahlen von 1 bis 12 prüft und alle durch 3 teilbaren Werte mit '''continue''' überspringt. |
| − | * | + | * Schreiben Sie ein Skript, das prüft, ob der Prozess sshd läuft und bei Nichterreichen von drei erfolgreichen Prüfungen in Folge mit '''exit 2''' abbricht. |
| − | * | + | * Erstellen Sie eine verschachtelte Schleifenstruktur, die bei einer bestimmten Kombination (z. B. 3 und B) beide Ebenen mit '''break 2''' verlässt. |
Aktuelle Version vom 25. November 2025, 15:49 Uhr
Kontrollbefehle in Schleifen und Skripten (break, continue, exit)
- Die Bash stellt spezielle Steuerbefehle bereit, um den Ablauf von Schleifen oder ganzen Skripten gezielt zu beeinflussen.
- Dazu gehören insbesondere die Kommandos break, continue und exit.
break
- Mit break wird die aktuelle Schleife sofort beendet, auch wenn die Abbruchbedingung noch nicht erfüllt ist.
- Nach dem Abbruch setzt das Skript mit der nächsten Anweisung nach der Schleife fort.
- Beispiel – Schleife abbrechen bei bestimmtem Wert
ZAHL=1
while [ $ZAHL -le 10 ]
do
echo "Zahl: $ZAHL"
if [ $ZAHL -eq 5 ]
then
echo "Abbruch bei $ZAHL"
break
fi
ZAHL=$((ZAHL+1))
done
echo "Schleife beendet."
Ausgabe: Zahl: 1 Zahl: 2 Zahl: 3 Zahl: 4 Zahl: 5 Abbruch bei 5 Schleife beendet.
- Mit einem numerischen Argument kann break mehrere Ebenen verschachtelter Schleifen gleichzeitig verlassen.
- Beispiel – zweifach verschachtelt
for a in 1 2 3
do
for b in A B C
do
echo "$a$b"
if [ "$a$b" = "2B" ]
then
break 2
fi
done
done
echo "Abbruch nach 2B"
continue
- Mit continue wird der aktuelle Schleifendurchlauf sofort beendet.
- Die Schleife selbst läuft weiter – der nächste Durchlauf beginnt sofort.
- Beispiel – bestimmte Werte überspringen
for i in $(seq 1 7)
do
if [ $i -eq 4 ]
then
echo "Überspringe $i"
continue
fi
echo "Wert: $i"
done
Ausgabe: Wert: 1 Wert: 2 Wert: 3 Überspringe 4 Wert: 5 Wert: 6 Wert: 7
exit
- Der Befehl exit beendet das gesamte Skript (nicht nur eine Schleife).
- Dabei kann ein Exit-Status angegeben werden, der an den aufrufenden Prozess zurückgegeben wird.
- Ein Exit-Status von 0 bedeutet Erfolg, ein anderer Wert signalisiert Fehler.
- Beispiel – Skript mit Exit-Status
#!/bin/bash
echo "Starte Überprüfung..."
if [ ! -d /etc ]
then
echo "/etc existiert nicht!"
exit 1
fi
echo "Überprüfung abgeschlossen."
exit 0
- Der Rückgabewert eines beendeten Skripts kann in der Shell mit folgendem Befehl geprüft werden:
echo $?
Zusammenfassung
| Befehl | Wirkung | Bereich |
|---|---|---|
| break | Beendet Schleife sofort | Schleifenebene |
| continue | Überspringt aktuellen Durchlauf | Schleifenebene |
| exit | Beendet gesamtes Skript | Prozess/Skript |
Aufgaben
- Schreiben Sie eine Schleife, die alle Dateien in /var/log durchgeht und beim ersten Treffer größer als 1 MB mit break beendet.
- Erstellen Sie eine Schleife, die Zahlen von 1 bis 12 prüft und alle durch 3 teilbaren Werte mit continue überspringt.
- Schreiben Sie ein Skript, das prüft, ob der Prozess sshd läuft und bei Nichterreichen von drei erfolgreichen Prüfungen in Folge mit exit 2 abbricht.
- Erstellen Sie eine verschachtelte Schleifenstruktur, die bei einer bestimmten Kombination (z. B. 3 und B) beide Ebenen mit break 2 verlässt.