Это зависит от окружающей среды, но я бы сказал, что это плохой стиль.
В Unix-подобных системах существует строгое соглашение, что состояние выхода 0 означает успех, а любое ненулевое состояние выхода означает сбой. Некоторые, но не все, программы различают различные виды сбоев с разными ненулевыми кодами выхода; например, grep
обычно возвращает 0, если шаблон был найден, 1, если его не было, и 2 (или более), если произошла ошибка, например, отсутствующий файл.
Это соглашение в значительной степени встроено в оболочку Unix. Например, в sh
, bash
и других подобных Борну оболочках, if
оператор обрабатывает состояние выхода 0 как успех / истина, а ненулевой статус выхода - сбой / ложь:
if your-command
then
echo ok
else
echo FAILURE
fi
Я считаю, что соглашения под MS Windows похожи.
Теперь, конечно, ничто не мешает вам написать свою собственную программу, использующую нетрадиционные коды выхода, особенно если с ней больше ничего не будет взаимодействовать, но имейте в виду, что вы нарушаете хорошо установленное соглашение, и оно может вернуться и укусить вас позже ,
Обычный способ для программы вернуть такую информацию - распечатать ее по адресу stdout
:
status = $(your-command)
echo Result is $status
set -e
куда-нибудь.