Wbudowane polecenie exit
wychodzi z powłoki (z odwołania Basha ):
exit [n]
Wyjdź z powłoki, zwracając status n rodzicowi powłoki. Jeśli n zostanie pominięte, stanem wyjścia jest status ostatniego wykonanego polecenia. Wszelkie pułapki na EXIT są wykonywane przed zakończeniem powłoki.
Uruchomienie do końca pliku również kończy działanie, zwracając kod powrotu ostatniego polecenia, więc tak, finał exit 0
sprawi, że skrypt zakończy działanie z udanym statusem, niezależnie od statusu wyjścia poprzednich poleceń. (To znaczy, zakładając, że skrypt dojdzie do finału exit
.) Na końcu skryptu można również użyć true
lub :
uzyskać zerowy kod wyjścia.
Oczywiście częściej używasz exit
od wewnątrz, if
aby zakończyć skrypt w środku.
Powinny wypisać 1 ( $?
zawiera kod wyjścia zwrócony przez poprzednie polecenie):
sh -c "false" ; echo $?
sh -c "false; exit" ; echo $?
Chociaż powinno to wydrukować 0:
sh -c "false; exit 0" ; echo $?
Nie jestem pewien, czy koncepcja skryptu „zawodzi” podczas wykonywania exit
ma sens, ponieważ całkiem możliwe jest, że niektóre polecenia uruchamiane przez skrypt nie działają, ale sam skrypt się powiedzie. Od autora skryptu zależy, który z nich zakończy się sukcesem, a co nie.
Ponadto standardowy zakres kodów wyjścia wynosi 0..255. Kody powyżej 127 są używane przez powłokę do wskazania procesu zakończonego sygnałem, ale można je zwrócić w zwykły sposób. wait
Wywołanie systemowe faktycznie zwraca szerszą wartość, z bitami stanu spoczynku zawierający określonych przez system operacyjny.
exit 0
, zakończy działanie z kodem wyjścia 0, niezależnie od tego, co dzieje się w skrypcie.