Ich habe Schwierigkeiten, eine umfassende, aktuelle Liste der Fehlercodes von Bash zu finden. z.B:
$ 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?
documentation
exit
exit-status
Dave Rove
quelle
quelle
udevadm
ist nicht ein Bash - Skript ...Antworten:
tl; dr Exit-Codes sind anwendungsspezifisch.
Es gibt einige lose Konventionen.
false
und alles, was in POSIX-Shells mit einem Präfix!
(wie! true
) versehen ist, 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 dies bedeutet. Bei Programmen mitman
Seiten werden Exit-Codes häufig in einem Abschnitt mit dem NamenEXIT STATUS
(GNU-Tools wiefind
) aufgeführt.Einige beliebte Bedeutungen sind in aufgeführt
/usr/include/sysexits.h
- ich versuche, sie wann immer möglich zu verwenden. Wie @AnsgarEsztermann hervorhebt , handelt es sich hierbei nicht um eine Bash-Referenz oder gar eine Anwendungsreferenz, außer für diejenigen, die sich für die Verwendung entscheiden (C / C ++ - Entwickler hauptsächlich gemäß ABS ).quelle
sysexits.h
sind so gut wie unbenutzt, außer vonprocmail
und Firma. Nur sendmail (und einige andere MTAs) kümmern sich um sie.Es gibt eine Handvoll Exit-Codes mit reservierten speziellen Bedeutungen :
Alles unter 125 ist ein faires Spiel für Entwickler und kann wirklich nur durch Lesen der Seite für die Anwendung oder des Quellcodes erraten
man
werden, um festzustellen, was der Code bedeutet (wenn er tatsächlich dokumentiert ist) , wie 10b0 in seiner Antwort feststellt überhaupt).quelle
1
oder2
gemeint istsuccess
. Alles ist eigentlich ein faires Spiel für Entwickler.&&
,||
,!
,set -e
, ...).diff
es geht nicht um Shell-Buildins. 1 und 2 sind beide gemeinsame Catchalls.