Website-Suche

Wie man den Exit-Status eines Befehls in Linux überprüft


Wenn Sie auf einem Linux-System arbeiten, gibt jeder Befehl, den Sie ausführen, einen Statuscode (auch Exit-Status oder Rückgabecode genannt) zurück, der Ihnen mitteilt, ob er erfolgreich ausgeführt wurde oder fehlgeschlagen ist.

Als Linux-Benutzer, insbesondere wenn Sie Shell-Skripting lernen oder Fehler beheben, ist es sehr wichtig zu wissen, wie man den Exit-Status eines Befehls überprüft.

In diesem Artikel werde ich erklären, was Exit-Status bedeutet, wie man ihn überprüft und warum er wichtig ist.

Was ist der Exit-Status in Linux?

Immer wenn Sie einen Befehl unter Linux ausführen, gibt das System am Ende stillschweigend eine Bewertung dafür ab, die nur eine Zahl ist, die Exit-Status (oder Rückgabecode) genannt wird.

  • Wenn die Zahl 0 ist, bedeutet das, dass der Befehl erfolgreich ausgeführt wurde, ohne irgendwelche Fehler.
  • Wenn die Zahl nicht 0 ist, bedeutet dies, dass der Befehl auf irgendeine Weise nicht ausgeführt werden konnte.

Denk darüber so:

  • 0=„Alles gut!“
  • 1=„Etwas ist schiefgelaufen (allgemeiner Fehler)“
  • 2, 127, 126 usw.=Verschiedene Arten von Problemen, wie „Datei nicht gefunden“ oder „Befehl nicht ausführbar“.

Man sieht diese Zahlen nicht immer auf dem Bildschirm angezeigt, aber Linux speichert sie in einer speziellen Variablen namens $?. Man kann sie jederzeit prüfen, um zu wissen, ob der letzte Befehl erfolgreich war oder fehlgeschlagen ist.

Tipp: Diese Exit-Codes sind besonders wichtig, wenn Sie Bash-Skripte schreiben, da sie Ihnen helfen, Entscheidungen zu treffen, abhängig davon, ob ein Befehl erfolgreich war oder fehlgeschlagen ist.

Wie man den Exit-Status eines Befehls überprüft

In Linux wird der Exit-Status des zuletzt ausgeführten Befehls in einer speziellen Shell-Variablen gespeichert, die heißt:

$?

Der beste Weg, den Exit-Status zu verstehen, besteht darin, Befehle tatsächlich auszuführen.

Beispiel 1: Erfolgreicher Befehl

ls
echo $?

Was passiert hier:

  • Zuerst listet ls die Dateien in Ihrem aktuellen Verzeichnis auf.
  • Da der Befehl ohne Probleme ausgeführt wurde, setzt Linux den Exit-Status auf 0.
  • Wenn wir den Status sofort mit echo $? überprüfen, wird 0 ausgegeben.

Ein 0-Exitcode bedeutet immer Erfolg. In diesem Fall hat der ls-Befehl also genau das getan, was wir erwartet haben.

Beispiel 2: Fehlgeschlagener Befehl

ls /nonexistent
echo $?

Was passiert hier:

  • Wir haben versucht, Dateien in einem Verzeichnis namens /nonexistent aufzulisten.
  • Dieses Verzeichnis existiert nicht im System, daher schlägt der Befehl ls fehl.
  • Linux setzt dann den Exit-Status auf eine Zahl ungleich null (in diesem Fall 2).
  • Wenn wir mit echo $? nachsehen, sehen wir:

Beispiel 3: Verwendung des Exit-Status in einem Skript

Exit-Status werden wirklich nützlich, wenn man sie in Shell-Skripten verwendet, da Skripte oft Entscheidungen basierend darauf treffen müssen, ob ein Befehl erfolgreich war oder fehlgeschlagen ist.

Schauen wir uns ein einfaches Beispiel an:

#!/bin/bash

ls /etc > /dev/null
if [ $? -eq 0 ]; then
    echo "Command successful!"
else
    echo "Command failed!"
fi

Was passiert hier:

  • Wenn der ls-Befehl funktioniert → wird „Befehl erfolgreich!“ ausgegeben.
  • Wenn es fehlschlägt → druckt „Befehl fehlgeschlagen!“.

Ein saubererer Weg: Verwendung von && und ||

Anstatt jedes Mal $? zu überprüfen, können Sie Befehle verketten:

  • command && echo "Erfolg" → führt den zweiten Befehl nur aus, wenn der erste erfolgreich war.
  • command || echo "Failed" → führt den zweiten Befehl nur aus, wenn der erste fehlschlägt.

Beispiel:

ls /etc && echo "Found it!" || echo "Not found!"

Übliche Exit-Status-Codes

Hier sind einige häufig gesehene Exit-Codes:

BeendigungscodeBedeutung
Erfolg
1Allgemeiner Fehler
2Missbrauch des Shell-Befehls
126Befehl gefunden, aber nicht ausführbar
127Befehl nicht gefunden
130Skript durch Strg+C beendet
255Exit-Status außerhalb des Bereichs
Schlussgedanken

Der Exit-Status ist eine kleine Zahl, aber er spielt eine große Rolle beim interaktiven Ausführen von Befehlen oder beim Schreiben von Shell-Skripten. Das Verstehen von Exit-Codes hilft Ihnen, Probleme zu debuggen und Ihren Arbeitsablauf zu steuern.

Das nächste Mal, wenn ein Befehl nicht wie erwartet funktioniert, schauen Sie sich nicht nur die Fehlermeldung an, sondern überprüfen Sie auch den Exit-Status!