To zależy od środowiska, ale powiedziałbym, że to zły styl.
Systemy uniksowe mają silną konwencję, że status wyjścia 0 oznacza sukces, a każdy niezerowy status wyjścia oznacza niepowodzenie. Niektóre, ale nie wszystkie, programy rozróżniają różne rodzaje awarii za pomocą różnych niezerowych kodów wyjścia; na przykład grep
zwykle zwraca 0, jeśli wzorzec został znaleziony, 1, jeśli nie został, i 2 (lub więcej), jeśli wystąpił błąd, taki jak brakujący plik.
Ta konwencja jest dość mocno połączona z powłokami uniksowymi. Na przykład, w sh
, bash
i innych powłokach podobnych do Bourne'a, if
instrukcja traktuje status wyjścia 0 jako sukces / prawda, a niezerowy status wyjścia jako niepowodzenie / fałsz:
if your-command
then
echo ok
else
echo FAILURE
fi
Uważam, że konwencje w MS Windows są podobne.
Teraz z pewnością nic nie stoi na przeszkodzie, aby napisać własny program, który używa niekonwencjonalnych kodów wyjścia, szczególnie jeśli nic innego nie będzie z nim współdziałać, ale pamiętaj, że naruszasz ustaloną konwencję, a może on wrócić i ugryźć cię później .
Zwykłym sposobem na zwrócenie tego rodzaju informacji przez program jest wydrukowanie ich na stdout
:
status = $(your-command)
echo Result is $status
set -e
gdzieś tam umieścił .