Vorzeitiger Abbruch: Unterschied zwischen den Versionen

Aus Xinux Wiki
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 while-Schleife, die von 1 bis 10 zählt und bei 6 mit '''break''' abbricht.
+
* Schreiben Sie eine Schleife, die alle Dateien in /var/log durchgeht und beim ersten Treffer größer als 1 MB mit '''break''' beendet.
* Schreiben Sie eine for-Schleife, die alle Zahlen von 1–7 ausgibt, aber 3 und 5 mit '''continue''' überspringt.
+
* Erstellen Sie eine Schleife, die Zahlen von 1 bis 12 prüft und alle durch 3 teilbaren Werte mit '''continue''' überspringt.
* Erstellen Sie ein Skript, das mit '''exit 1''' endet, wenn ein bestimmtes Verzeichnis fehlt, sonst mit '''exit 0'''.
+
* 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.
* Erklären Sie, warum '''exit''' im Gegensatz zu '''break''' das gesamte Skript beendet.
+
* 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.