Chcę wiedzieć, co to jest wyjście 99 i dlaczego należy go używać i jakie są jego znaczenia.

Na przykład , Używam exit 99.

Komentarze

Odpowiedź

Wyjście z kodem 99 nie ma żadnego znaczenia poza tym, że jest to możliwe w kontekście konkretny program.

Tak czy inaczej, exit wychodzi z powłoki z określonym kodem zakończenia, w tym przypadku 99. Więcej informacji można znaleźć w 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. 

Komentarze

  • Jeśli chcesz coś konkretnego z takim kodem powrotu w bashu, użyj $?, aby się do niego dostać.
  • Niezupełnie – 99 to nie zero, więc indi wskazuje, że program z jakiegoś powodu zawiódł.
  • @psusi Istnieje wiele niezerowych kodów zakończenia w aplikacjach, które nie mają nic wspólnego z awarią, ale wskazują inne warunki wykonania (wiele programów używa go do wskazania fałszywego na przykład nieoptymalne wykonanie zamiast niepowodzenia). Aby zapewnić, że określony kod zakończenia musi wskazywać błąd, nie wiedząc, że program jest po prostu nieprawdziwy. Wygrałem ' t spekulować na temat znaczenia " 99 " w jakimś nieznanym programie.
  • Powłoka i większość innych narzędzi, w tym make, traktuje każdą niezerową wartość wyjścia jako błąd.
  • Z wyjątkiem tych, które wskazują błąd w izolacji, a nie w szerszym kontekście sprawdzania za prawdomówność. Tak czy inaczej, odmawiam spekulacji na temat znaczenia jakiegoś kodu zakończenia, gdy aplikacja nie jest zdefiniowana.

Odpowiedź

Oprócz @Chris Down istnieje kod powrotu, który jest zarezerwowany dla powłoki, mają one specjalne znaczenie:

RETVAL Meaning 1 General errors 2 Misusage 127 Command not found 

Możesz odnieść się do this , aby uzyskać więcej informacji.

Komentarze

  • @MrLister: Yeap, my mistypo, naprawiono!
  • nadal brakuje elementu s (" Misuage "?)

Odpowiedz

Zwykle, jeśli skończysz swój skrypt w którymś momencie:

exit 0 

Powłoka otrzyma 0 jako kod powrotu . To zero oznacza wszystko było w porządku .

Jeśli jednak program napotkał jakiś błąd, powinien zakończyć się z niezerowym kodem powrotu, aby poinformować powłokę, że coś poszło nie tak. Jeśli nie chcesz być bardziej szczegółowy, możesz po prostu użyć 1.

exit 1 

Możesz jednak poinformować powłokę o konkretnym typie błędów, używając inne liczby. Na przykład bash samo zwraca 127 dla nie znaleziono programu . Jeśli więc udokumentujesz zachowanie swojego skryptu, możesz zrobić coś pożytecznego po uruchamiając go, sprawdzając wartość specjalnej zmiennej $?, która przechowuje kod powrotu ostatnio wykonanego programu.

Zajrzałem do tego jakiś czas temu i znalazłem że na przykład FreeBDS ma kilka bardzo przydatnych konwencji dotyczących kodów zakończenia, udokumentowanych w man 3 sysexits

Komentarze

Odpowiedź

Istnieje bardzo długa konwencja (w Uniksie) dotycząca zwrotu- zakresy stanów:

  • 0 oznacza sukces
  • liczby dodatnie oznaczają drobne problemy, ale zasadniczo zadanie zostało zakończone
  • liczby ujemne oznaczają błąd krytyczny (np zapełniony dysk, plik-nie-znaleziony)

Dokładnie to, co oznaczają poszczególne liczby dodatnie i ujemne, zależy od programisty. Czasami można je wybrać ze względu na kompatybilność z innymi podobnymi programami (np. Narzędziami Gnu). @Gnouc wymienia niektóre.

Nie, nie jestem świadomy żadnego specjalnego znaczenia kodu zakończenia 99, nigdy go nie widziałem. Może to oznacza „Za mało piwa”

Zobacz:

Komentarze

  • Nigdy nie słyszałem o tej konwencji uniksowej. A twoje dwa odniesienia nie potwierdzają twojego twierdzenia o tej konwencji.
  • Pierwsza referencja tak. Jest 1,67 mln trafień Google na dodatnie liczby ujemne statusu powrotu unixa .
  • Istnieje niewielka liczba ujemnych wartości zwracanych określonych w POSIX.1, ale są one przeznaczone do programowania interfejsów API

Odpowiedź

Niektórzy programiści dostarczają wiele różnych kodów błędów, rozpoczynając z 1. Nowe wersje mogą wprowadzać nowe specyficzne kody błędów, więc który kod powinien być używany w przypadku
„wszystkich innych błędów / nieokreślonego błędu”? Kody zakończenia zostaną obcięte do 255, więc wybrałbym 99 jako „inny błąd” .

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *