Dipende dall'ambiente, ma direi che è uno stile scadente.
I sistemi simili a Unix hanno una forte convenzione secondo cui uno stato di uscita pari a 0 indica il successo e qualsiasi stato di uscita diverso da zero indica un fallimento. Alcuni programmi, ma non tutti, distinguono tra diversi tipi di guasti con codici di uscita diversi da zero; ad esempio, in grep
genere restituisce 0 se il modello è stato trovato, 1 se non lo è stato e 2 (o più) se si è verificato un errore come un file mancante.
Questa convenzione è praticamente cablata nelle shell Unix. Ad esempio, in sh
, bash
e altre shell tipo Bourne, l' if
istruzione considera uno stato di uscita 0 come successo / vero e uno stato di uscita diverso da zero come fallimento / falso:
if your-command
then
echo ok
else
echo FAILURE
fi
Credo che le convenzioni in MS Windows siano simili.
Ora non c'è nulla che ti impedisca di scrivere il tuo programma che utilizza codici di uscita non convenzionali, soprattutto se nient'altro interagirà con esso, ma tieni presente che stai violando una convenzione consolidata e potrebbe tornare e morderti in seguito .
Il modo normale per un programma di restituire questo tipo di informazioni è di stamparlo su stdout
:
status = $(your-command)
echo Result is $status
set -e
qualche parte.