Voglio sapere cosè luscita 99, perché si dovrebbe usarla e quali sono i suoi usi significativi.
Ad esempio , Sto utilizzando exit 99
.
Commenti
- Risposta abbastanza simile a SO: " Perché restituire un errno negativo? (Ad es. Return -EIO) "
Risposta
Non ha significato uscire con il codice 99, a parte forse nel contesto di un programma specifico.
In ogni caso, exit
esce dalla shell con un certo codice di uscita, in questo caso 99. Puoi trovare maggiori informazioni in help exit
:
exit: exit [n] Exit the shell. Exits the shell with a status of N. If N is omitted, the exit status is that of the last command executed.
Commenti
- Se vuoi fare qualcosa di specifico con un codice di ritorno come quello in bash, usa
$?
per arrivarci. - Non proprio – 99 non è zero, quindi indi indica che il programma non è riuscito per qualche motivo.
- @psusi Ci sono molti codici di uscita diversi da zero nelle applicazioni che non hanno a che fare con il fallimento, ma indicano altre condizioni di esecuzione (molti programmi lo usano per indicare falsità o esecuzione non ottimale piuttosto che fallimento, per esempio). Affermare che un certo stato di uscita deve indicare un fallimento senza sapere che il programma è semplicemente falso. Non ho ' speculare sul significato di " 99 " in qualche programma sconosciuto.
- La shell e la maggior parte degli altri strumenti, incluso make, trattano qualsiasi valore di uscita diverso da zero come un errore.
- Ad eccezione di questi, indicano solo il fallimento in isolamento, non in un contesto più ampio di controllo per la verità. In ogni caso, mi rifiuto di speculare sul significato di un codice di uscita quando lapplicazione non è definita.
Risposta
Oltre a @Chris Down, cè del codice di ritorno riservato alla shell, hanno un significato speciale:
RETVAL Meaning 1 General errors 2 Misusage 127 Command not found
Puoi fare riferimento a this per maggiori dettagli.
Commenti
- @MrLister: Yeap, my mistypo, risolto!
- cè ancora un
s
mancante (" Misuage "?)
Risposta
Normalmente, se a un certo punto finisci lo script con:
exit 0
La shell otterrà uno 0 come codice di ritorno . Questo zero significa tutto a posto .
Tuttavia, se il tuo programma ha trovato una condizione di errore, dovrebbe uscire con un codice di ritorno diverso da zero, per informare la shell che qualcosa è andato storto. Se non vuoi essere più specifico, puoi semplicemente usare 1.
exit 1
Puoi comunque informare la shell di particolari tipi di errori usando altri numeri. Ad esempio, bash
restituisce 127 per programma non trovato . Quindi, se documenti il comportamento del tuo script, puoi fare qualcosa di utile dopo eseguendolo controllando il valore della variabile speciale $?
, che contiene il codice di ritorno dellultimo programma eseguito.
Lho esaminato qualche tempo fa e ho trovato che, ad esempio, FreeBDS aveva alcune convenzioni molto utili per quanto riguarda i codici di uscita, documentate in man 3 sysexits
Commenti
- " La shell riceverà uno 0 come codice di ritorno " sbagliato,
exit
senza parametri esce con il codice di stato dellultimo comando eseguito. (vedi pub s.opengroup.org/onlinepubs/009695399/utilities/exit.html ) - Grazie, mio malinteso di vecchia data, risolverà la risposta.
- Fantastico, voto negativo rimosso 🙂
Risposta
Esiste una convenzione di vecchia data (in Unix) per il ritorno- intervalli di stato:
- 0 significa successo
- numeri positivi indicano problemi minori, ma essenzialmente lattività completata
- i numeri negativi indicano un errore critico (ad es disco pieno, file non trovato)
Che cosa significano esattamente quei singoli numeri positivi e negativi dipende dal programmatore. A volte puoi sceglierli per compatibilità con altri programmi simili (ad es. Strumenti Gnu). @Gnouc ne elenca alcuni.
No, non sono a conoscenza di alcun significato speciale per il codice di uscita 99, non lho mai visto usato. Forse significa “Birra insufficiente”
Vedi:
- risposta a COSÌ: “Perché restituire un errno negativo? (per esempio.return -EIO) “ anche
- mostra lelenco dei codici di errore Unix standard estratti da errno.h , sebbene questi siano positivi .
Commenti
- Non ho mai sentito parlare di quella convenzione Unix. E i tuoi due riferimenti non supportano la tua asserzione su quella convenzione.
- Il primo riferimento sì. Ci sono 1,67 milioni di risultati di Google su unix restituisce numeri negativi positivi .
- Cè un piccolo numero di valori di ritorno negativi specificati in POSIX.1 ma questi sono per le API di programmazione
Answer
Alcuni programmatori forniranno molti codici di errore diversi a partire con 1. Le nuove versioni potrebbero introdurre nuovi codici di errore specifici, quindi quale codice dovrebbe essere utilizzato per
“tutti gli altri errori / errore non specificato”? I codici di uscita verranno troncati a 255, quindi sceglierei 99 come “altro errore” .