Fehlerbehandlung und Exit-Status
Implementieren Sie eine robuste Fehlerprüfung in Ihren Skripten, indem Sie Exit-Status verstehen und „set -e“ sowie bedingte Logik verwenden.
Fehlerbehandlung und Exit-Status ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Willkommen bei der Fehlerbehandlung
In dieser Lektion lernen Sie, wie Sie Fehler effektiv behandeln und Ihre Bash-Skripte dadurch robuster machen.
Stellen Sie sich ein Skript vor, das viele Schritte ausführt. Wenn ein Schritt fehlschlägt, soll Ihr Skript vermutlich anhalten oder Sie zumindest über den Fehler informieren, richtig? Genau hier kommt die Fehlerbehandlung ins Spiel!
Was ist ein Exit-Status?
Jeder Befehl, den Sie in der Linux-Shell ausführen, gibt einen Exit-Status zurück (manchmal auch Exit-Code oder Rückgabecode genannt).
- Ein Status von 0 bedeutet, dass der Befehl erfolgreich abgeschlossen wurde.
- Ein Status ungleich null (z. B. 1, 2, 127) weist auf eine Form von Fehler oder ein fehlgeschlagenes Ergebnis hin.
Das ist wie eine Ampel für Ihre Befehle!
Exit-Status manuell prüfen
Sie können den Exit-Status des zuletzt ausgeführten Befehls mithilfe der speziellen Variablen $? prüfen.
Probieren wir einen erfolgreichen und einen fehlschlagenden Befehl aus:
#!/bin/bash
echo "Hello CoddyKit"
echo "Exit status: $?"
ls non_existent_file.txt
echo "Exit status: $?"Grundlegende bedingte Fehlerprüfung
Wenn Sie den Exit-Status kennen, kann Ihr Skript Entscheidungen treffen. Mit einer if-Anweisung können Sie $? prüfen und auf Fehler reagieren.
Dadurch erkennt Ihr Skript Probleme und verhindert, dass es mit ungültigen Daten fortfährt.
#!/bin/bash
ls non_existent_file.txt
if [ $? -ne 0 ]; then
echo "Error: The 'ls' command failed!"
exit 1 # Exit script with an error code
fi
echo "This line will not run if 'ls' fails."Die Vorteile von `set -e`
$? nach jedem Befehl manuell zu prüfen, kann mühsam sein. Hier erweist sich set -e als hilfreich!
Wenn Sie ein Skript mit set -e starten, beendet Bash die Ausführung sofort, sobald ein Befehl, der nicht Teil einer Bedingungsprüfung ist, mit einem Status ungleich null endet.
Das ist ein globaler Sicherheitsschalter für Ihre Skripte!
`set -e` in Aktion
Sehen wir uns an, wie set -e verhindert, dass ein Skript nach einem Fehler fortfährt. Beachten Sie, dass der abschließende echo-Befehl nie erreicht wird.
#!/bin/bash
set -e
echo "Starting important tasks..."
# This command will fail
cp /non_existent_source /tmp/destination
echo "This line will NOT be printed if 'cp' fails."
echo "All tasks completed successfully."Wann `set -e` nicht beendet
set -e ist leistungsfähig, folgt aber bestimmten Regeln. Das Skript wird nicht beendet, wenn der fehlschlagende Befehl:
- Teil einer
if- oderwhile-Bedingung ist. - Teil einer
&&- oder||-Liste ist (außer beim letzten Befehl). - Mit
!vorangestellt ist.
Diese Kontexte dienen dazu, Erfolg oder Fehlschlag zu prüfen. Daher greift `set -e` dort nicht ein.
`set -e` mit `||` kombinieren
Manchmal möchten Sie vor dem Beenden eine eigene Fehlermeldung ausgeben. Sie können set -e mit dem ||-(ODER-)Operator kombinieren.
command || { echo "Error message"; exit 1; }
Wenn command fehlschlägt, wird der Teil nach || ausgeführt, gibt Ihre Meldung aus und beendet das Skript anschließend mit einem bestimmten Fehlercode.
#!/bin/bash
set -e
echo "Attempting to find a file..."
find /non_existent_dir -name "*.txt" || \
{ echo "ERROR: Could not search in /non_existent_dir!"; exit 1; }
echo "Script continued (this won't print if 'find' fails)."Bestimmte Exit-Codes behandeln
Während 0 Erfolg bedeutet und ein Wert ungleich null auf einen Fehler hinweist, können bestimmte Werte ungleich null unterschiedliche Bedeutungen haben.
1: Allgemeiner Fehler.2: Falsche Verwendung von Shell-Builtins.127: Befehl nicht gefunden.
Mit if [ $? -eq 127 ] können Sie auf bestimmte Fehlertypen prüfen und dadurch gezieltere Fehlermeldungen ausgeben.
Quiz zur Fehlerbehandlung
Welche der folgenden Aussagen zu Bash-Exit-Statuswerten und Fehlerbehandlung ist RICHTIG?
Zusammenfassung: Robuste Skripte
Sie haben gelernt, wie Sie Ihre Bash-Skripte deutlich zuverlässiger machen!
- Jeder Befehl gibt einen Exit-Status zurück (0 bei Erfolg, ein Wert ungleich null bei einem Fehler).
- Die Variable
$?enthält den Exit-Status des letzten Befehls. set -ebeendet Ihr Skript bei den meisten fehlgeschlagenen Befehlen automatisch.- Kombinieren Sie
set -emit||, um eigene Fehlermeldungen auszugeben.
Mit diesen Techniken können Sie professionellere und stabilere Skripte schreiben.
Häufig gestellte Fragen
Ist die Lektion „Fehlerbehandlung und Exit-Status“ kostenlos?
Ja — der vollständige Text von „Fehlerbehandlung und Exit-Status“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Fehlerbehandlung und Exit-Status“?
Implementieren Sie eine robuste Fehlerprüfung in Ihren Skripten, indem Sie Exit-Status verstehen und „set -e“ sowie bedingte Logik verwenden. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um DevOps Bootcamp zu starten?
Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Fehlerbehandlung und Exit-Status“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?
Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Bash-Skripte debuggen (set -x, trap)
- Fehlerbehandlung und Exit-Status
- Bewährte Verfahren und Linting für Skripte
- Bash-Skripte mit Bats testen