Depende do ambiente, mas eu diria que é um estilo pobre.
Os sistemas tipo Unix têm uma convenção forte de que um status de saída 0 indica êxito e qualquer status de saída diferente de zero indica falha. Alguns programas, mas não todos, distinguem entre diferentes tipos de falhas com códigos de saída diferentes de zero; por exemplo, grep
normalmente retorna 0 se o padrão foi encontrado, 1 se não foi e 2 (ou mais) se houve um erro, como um arquivo ausente.
Essa convenção é praticamente conectada às conchas do Unix. Por exemplo, em sh
, bash
e outros shells semelhantes a Bourne, a if
instrução trata um status de saída 0 como êxito / verdadeiro e um status de saída diferente de zero como falha / falso:
if your-command
then
echo ok
else
echo FAILURE
fi
Eu acredito que as convenções no MS Windows são semelhantes.
Agora certamente não há nada que o impeça de escrever seu próprio programa que usa códigos de saída não convencionais, especialmente se nada mais interagir com ele, mas lembre-se de que você está violando uma convenção bem estabelecida e que pode voltar e mordê-lo mais tarde .
A maneira usual de um programa retornar esse tipo de informação é imprimi-lo em stdout
:
status = $(your-command)
echo Result is $status
set -e
algum lugar.