Vorzeitiger Abbruch

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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.