Der eingebaute Befehl beendet exit
die Shell (aus Bashs Referenz ):
exit [n]
Beenden Sie die Shell und geben Sie dem übergeordneten Element der Shell den Status n zurück. Wenn n weggelassen wird, ist der Beendigungsstatus der des zuletzt ausgeführten Befehls. Jeder Trap bei EXIT wird ausgeführt, bevor die Shell beendet wird.
Das Ausführen bis zum Ende der Datei wird ebenfalls beendet, wobei der Rückkehrcode des letzten Befehls zurückgegeben wird. Ja, ein Finale exit 0
bewirkt, dass das Skript mit erfolgreichem Status beendet wird, unabhängig vom Beendigungsstatus der vorherigen Befehle. (Das heißt, vorausgesetzt, das Skript erreicht das Finale exit
.) Am Ende eines Skripts können Sie auch true
oder verwenden :
, um einen Exit-Code von Null zu erhalten.
Natürlich verwenden Sie öfter exit
von innen an if
, um das Skript in der Mitte zu beenden.
Diese sollten eine 1 ausgeben ( $?
enthält den vom vorherigen Befehl zurückgegebenen Exit-Code):
sh -c "false" ; echo $?
sh -c "false; exit" ; echo $?
Während dies eine 0 ausgeben sollte:
sh -c "false; exit 0" ; echo $?
Ich bin nicht sicher, ob das Konzept des Skripts beim Ausführen von exit
sinnvoll ist, da es durchaus möglich ist, dass einige vom Skript ausgeführte Befehle fehlschlagen, das Skript selbst jedoch erfolgreich ist. Es liegt an dem Autor des Skripts, zu entscheiden, was ein Erfolg ist und was nicht.
Der Standardbereich für Exit-Codes ist 0..255. Codes über 127 werden von der Shell verwendet, um einen Prozess anzuzeigen, der durch ein Signal beendet wird. Sie können jedoch auf die übliche Weise zurückgegeben werden. Der wait
Systemaufruf gibt tatsächlich einen breiteren Wert zurück, wobei der Rest vom Betriebssystem gesetzte Statusbits enthält.
exit 0
, wird es mit dem Beendigungscode 0 beendet, unabhängig davon, was im Skript passiert.