Ich möchte wissen, was Exit 99 ist und warum man es verwenden sollte und welche Bedeutung es hat.
Zum Beispiel Ich verwende exit 99
.
Kommentare
- Ziemlich ähnliche Antwort wie SO: " Warum eine negative Errno zurückgeben? (ZB return -EIO) "
Antwort
Das Beenden mit Code 99 hat keine Bedeutung, außer vielleicht im Zusammenhang mit ein bestimmtes Programm.
In beiden Fällen verlässt exit
die Shell mit einem bestimmten Exit-Code, in diesem Fall 99. Weitere Informationen finden Sie unter help exit
:
exit: exit [n] Exit the shell. Exits the shell with a status of N. If N is omitted, the exit status is that of the last command executed.
Kommentare
- Wenn Sie möchten Verwenden Sie die
$?
, um zu einem bestimmten Rückkehrcode wie dem in bash zu gelangen. - Nicht ganz – 99 ist nicht Null und daher indi gibt an, dass das Programm aus irgendeinem Grund fehlgeschlagen ist.
- @psusi In Anwendungen gibt es viele Exit-Codes ungleich Null, die nicht mit einem Fehler zu tun haben, sondern andere Ausführungsbedingungen angeben (viele Programme verwenden sie, um auf Falschheit hinzuweisen oder zum Beispiel nicht optimale Ausführung statt Fehler). Zu behaupten, dass ein bestimmter Exit-Status einen Fehler anzeigen muss, ohne das Programm zu kennen, ist einfach nicht wahr. Ich werde ' nicht über die Bedeutung von " 99 " in einem unbekannten Programm spekulieren.
- Die Shell und die meisten anderen Tools, einschließlich make, behandeln jeden Exit-Wert ungleich Null als Fehler.
- Abgesehen von diesen wird nur ein isolierter Fehler angezeigt, nicht in einem größeren Überprüfungskontext für die Wahrhaftigkeit. In beiden Fällen lehne ich es ab, über die Bedeutung eines Exit-Codes zu spekulieren, wenn die Anwendung nicht definiert ist.
Antwort
Zusätzlich zu @Chris Down gibt es einen Rückkehrcode, der für die Shell reserviert ist. Diese haben eine besondere Bedeutung:
RETVAL Meaning 1 General errors 2 Misusage 127 Command not found
Sie können auf dies für weitere Details.
Kommentare
- @MrLister: Ja, mein Fehler, behoben!
- Es fehlt noch ein
s
(" Fehler "?)
Antwort
Normalerweise, wenn Sie Ihr Skript irgendwann beenden mit:
exit 0
Die Shell erhält eine 0 als Rückkehrcode . Diese Null bedeutet alles war in Ordnung .
Wenn Ihr Programm jedoch eine Fehlerbedingung gefunden hat, haben Sie sollte mit einem Rückkehrcode ungleich Null beendet werden, um die Shell darüber zu informieren, dass ein Fehler aufgetreten ist. Wenn Sie nicht genauer sein möchten, können Sie einfach 1 verwenden.
exit 1
Sie können die Shell jedoch über bestimmte Arten von Fehlern informieren, indem Sie verwenden andere Zahlen. Beispielsweise gibt bash
selbst eine 127 für Programm nicht gefunden zurück. Wenn Sie also das Verhalten Ihres Skripts dokumentieren, können Sie danach etwas Nützliches tun Führen Sie es aus, indem Sie den Wert der speziellen Variablen $?
überprüfen, die den Rückkehrcode des zuletzt ausgeführten Programms enthält.
Ich habe dies vor einiger Zeit untersucht und gefunden dass FreeBDS beispielsweise einige sehr nützliche Konventionen in Bezug auf Exit-Codes hatte, die in man 3 sysexits
Kommentare
- " Die Shell erhält eine 0 als Rückkehrcode " falsch,
exit
ohne Parameter wird mit dem Statuscode des letzten ausgeführten Befehls beendet (siehe pub s.opengroup.org/onlinepubs/009695399/utilities/exit.html ) - Vielen Dank, langjähriges Missverständnis von mir, wird die Antwort korrigieren.
- Großartig, Downvote entfernt 🙂
Antwort
Es gibt eine sehr langjährige Konvention (unter Unix) für return- Statusbereiche:
- 0 bedeutet Erfolg
- positive Zahlen bedeuten kleinere Probleme, aber im Wesentlichen ist die Aufgabe erledigt
- negative Zahlen bedeuten kritischen Fehler (z Festplatte voll, Datei nicht gefunden)
Was genau diese einzelnen positiven und negativen Zahlen bedeuten, liegt beim Programmierer. Manchmal können Sie sie aus Gründen der Kompatibilität mit anderen ähnlichen Programmen (z. B. Gnu-Tools) auswählen. @Gnouc listet einige auf.
Nein, mir ist keine besondere Bedeutung für das Beenden von Code 99 bekannt, ich habe nie gesehen, dass er verwendet wird. Vielleicht bedeutet er „Nicht genug Bier“
Siehe:
- Antwort auf SO: „Warum einen negativen Fehler zurückgeben? (z.B.return -EIO) „ also
- Liste der Standard-Unix-Fehlercodes anzeigen, die aus errno.h ausgewählt wurden, obwohl diese positiv sind .
Kommentare
- Ich habe noch nie von dieser Unix-Konvention gehört. Und Ihre beiden Referenzen stützen Ihre Behauptung zu dieser Konvention nicht.
- Die erste Referenz tut dies. Es gibt 1,67 Millionen Google-Treffer auf Unix-Rückgabestatus, positive negative Zahlen .
- Es gibt eine kleine Anzahl von negativen Rückgabewerten, die in angegeben sind POSIX.1, aber diese dienen zum Programmieren von APIs.
Antwort
Einige Programmierer geben ab dem Start viele verschiedene Fehlercodes an mit 1. Neue Versionen führen möglicherweise neue spezifische Fehlercodes ein. Welcher Code sollte also für
„alle anderen Fehler / nicht spezifizierten Fehler“ verwendet werden? Die Exit-Codes werden bei 255 abgeschnitten, daher würde ich 99 als „anderen Fehler“ wählen. .