Depende del medio ambiente, pero diría que es de mal estilo.
Los sistemas tipo Unix tienen una convención fuerte de que un estado de salida de 0 denota éxito, y cualquier estado de salida distinto de cero denota falla. Algunos, pero no todos, los programas distinguen entre diferentes tipos de fallas con diferentes códigos de salida distintos de cero; por ejemplo, grep
generalmente devuelve 0 si se encontró el patrón, 1 si no lo fue y 2 (o más) si hubo un error, como la falta de un archivo.
Esta convención está bastante conectada a los shells de Unix. Por ejemplo, en sh
, bash
y otros shells tipo Bourne, la if
declaración trata un estado de salida 0 como exitoso / verdadero, y un estado de salida distinto de cero como falla / falso:
if your-command
then
echo ok
else
echo FAILURE
fi
Creo que las convenciones bajo MS Windows son similares.
Ahora, ciertamente, nada le impide escribir su propio programa que utiliza códigos de salida no convencionales, especialmente si nada más va a interactuar con él, pero tenga en cuenta que está violando una convención bien establecida, y podría volver y morderlo más tarde .
La forma habitual para que un programa devuelva este tipo de información es imprimirlo en stdout
:
status = $(your-command)
echo Result is $status
set -e
alguna parte.