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:*
Zusammenfassung
| Befehl |
Wirkung |
Bereich
|
| break |
Beendet Schleife sofort |
Schleifenebene
|
| continue |
Überspringt aktuellen Durchlauf |
Schleifenebene
|
| exit |
Beendet gesamtes Skript |
Prozess/Skript
|
Aufgaben
- Schreiben Sie eine while-Schleife, die von 1 bis 10 zählt und bei 6 mit break abbricht.
- Schreiben Sie eine for-Schleife, die alle Zahlen von 1–7 ausgibt, aber 3 und 5 mit continue überspringt.
- Erstellen Sie ein Skript, das mit exit 1 endet, wenn ein bestimmtes Verzeichnis fehlt, sonst mit exit 0.
- Erklären Sie, warum exit im Gegensatz zu break das gesamte Skript beendet.