
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 man
Seite 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. false
und 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 ) man
aufgelistet .EXIT STATUS
find
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).