Dipende dall'ambiente, ma direi che è di cattivo gusto.
I sistemi di tipo Unix hanno una strong convenzione che uno stato di uscita di 0 denota successo, e qualsiasi stato di uscita diverso da zero indica un errore. Alcuni, ma non tutti, programmi distinguono tra diversi tipi di guasti con codici di uscita diversi da zero; ad esempio grep
restituisce in genere 0 se il modello è stato trovato, 1 se non lo era, e 2 (o più) se c'è stato un errore come un file mancante.
Questa convenzione è praticamente collegata alle shell Unix. Ad esempio, in sh
, bash
e altre shell Bourne-like, l'istruzione if
considera uno stato di uscita 0 come successo / true e uno stato di uscita diverso da zero come errore / falso:
if your-command
then
echo ok
else
echo FAILURE
fi
Credo che le convenzioni di MS Windows siano simili.
Ora non c'è sicuramente nulla che ti impedisca di scrivere il tuo programma che usa codici di uscita non convenzionali, specialmente se non c'è altro che possa interagire con esso, ma tieni presente che stai violando una convenzione ben stabilita e che potrebbe torna indietro e morde dopo.
Il modo usuale per un programma di restituire questo tipo di informazioni è di stamparlo su stdout
:
status = $(your-command)
echo Result is $status