Wie suche ich Exitcodes für Anwendungen?

Wie suche ich Exitcodes für Anwendungen?

Ich habe Schwierigkeiten, eine umfassende und aktuelle Liste der Fehlercodes von Bash zu finden. Beispiel:

$ udevadm info /dev/sdx; echo Exit code $?
Unknown device, --name=, --path=, or absolute path in /dev/ or /sys expected.
Exit code 4

Wie soll man solche Exit-Codes nachschlagen?

Antwort1

Es gibt eine Handvoll Exit-Codes mitreservierte Sonderbedeutungen:

Exit-Code Nummer Bedeutung
1 Catchall für allgemeine Fehler
2 Missbrauch von Shell-Builtins (laut Bash-Dokumentation)
126 Der aufgerufene Befehl kann nicht ausgeführt werden
127 „Befehl nicht gefunden“
128+n Schwerwiegender Fehler Signal „n“
130 Skript durch Strg-C beendet
255* Beendigungsstatus außerhalb des gültigen Bereichs

Alles unter 125 ist Freiwild für Entwickler und kann eigentlich nur erraten werden, dal0b0 bemerkt in seiner Antwort, indem Sie die manSeite für die Anwendung oder den Quellcode lesen, um festzustellen, was der Code bedeutet (sofern er überhaupt dokumentiert ist).

Antwort2

tl;drExit-Codes sind anwendungsspezifisch.

Es gibt einige lose Konventionen. falseund alles, was in POSIX-Shells erfolgreich mit dem Präfix !(wie ! true) beginnt, gibt den Exit-Code 1 zurück, aber ein Entwickler kann jeden Exit-Code zwischen 0 und 255 für alles verwenden, was er will. Letztendlich müssen Sie sich die Dokumentation (im besten Fall) oder den Code (im schlimmsten Fall) ansehen, um zu wissen, was er bedeutet. Bei Programmen mit Seiten werden Exit-Codes oft in einem Abschnitt namens (GNU-Tools wie ) manaufgelistet .EXIT STATUSfind

Einige gängige Bedeutungen sind in aufgeführt /usr/include/sysexits.h- ich versuche, sie wann immer möglich zu verwenden.@AnsgarEsztermann weist darauf hin, dies ist keine Bash-Referenz und auch keine Anwendungsreferenz, außer für diejenigen, die sie verwenden möchten (hauptsächlich C/C++-Entwicklernach ABS).

verwandte Informationen