Vorzeitiger Abbruch
Version vom 25. November 2025, 15:49 Uhr von Thomas.will (Diskussion | Beiträge)
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.