Je veux savoir ce quest la sortie 99 et pourquoi lutiliser et quelles en sont les utilisations significatives.
Par exemple , Jutilise exit 99
.
Commentaires
- Réponse assez similaire à SO: " Pourquoi renvoyer un numéro derreur négatif? (Par exemple, retourner -EIO) "
Réponse
Il ny a aucune signification à quitter avec le code 99, à part peut-être dans le contexte de un programme spécifique.
Dans les deux cas, exit
quitte le shell avec un certain code de sortie, dans ce cas, 99. Vous pouvez trouver plus dinformations dans 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.
Commentaires
- Si vous voulez faire quelque chose de spécifique avec un code de retour comme celui de bash, utilisez
$?
pour y accéder. - Pas tout à fait – 99 nest pas zéro, donc indi indique que le programme a échoué pour une raison quelconque.
- @psusi Il existe de nombreux codes de sortie différents de zéro dans les applications qui ne sont pas liés à un échec, mais indiquent dautres conditions dexécution (de nombreux programmes lutilisent pour indiquer la fausseté ou exécution non optimale plutôt qu’échec, par exemple). Affirmer quun certain état de sortie doit indiquer un échec sans savoir que le programme est tout simplement faux. Jai gagné ' t spéculer sur la signification de " 99 " dans un programme inconnu.
- Le shell, et la plupart des autres outils, y compris make, traitent toute valeur de sortie différente de zéro comme une erreur.
- Sauf que ceux-ci indiquent uniquement léchec de manière isolée, pas dans un contexte plus large de vérification pour la vérité. Dans tous les cas, je refuse de spéculer sur la signification dun code de sortie lorsque lapplication nest pas définie.
Réponse
En plus de @Chris Down, il existe des codes de retour réservés au shell, ils ont une signification particulière:
RETVAL Meaning 1 General errors 2 Misusage 127 Command not found
Vous pouvez vous référer à this pour plus de détails.
Commentaires
- @MrLister: Oui, mon erreur, corrigé!
- il manque encore un
s
(" Misuage "?)
Réponse
Normalement, si vous terminez votre script à un moment donné avec:
exit 0
Le shell obtiendra un 0 comme code retour . Ce zéro signifie que tout était OK .
Cependant, si votre programme a trouvé une condition derreur, vous devrait quitter avec un code retour différent de zéro, pour informer le shell que quelque chose ne va pas. Si vous ne voulez pas être plus précis, vous pouvez simplement utiliser 1.
exit 1
Vous pouvez cependant informer le shell dun type particulier de pannes en utilisant dautres nombres. Par exemple, bash
renvoie lui-même un 127 pour programme introuvable . Donc, si vous documentez le comportement de votre script, vous pouvez faire quelque chose dutile après lexécuter en vérifiant la valeur de la variable spéciale $?
, qui contient le code de retour du dernier programme exécuté.
Jai regardé cela il y a un moment et jai trouvé que, par exemple, FreeBDS avait des conventions très utiles concernant les codes de sortie, documentées dans man 3 sysexits
Commentaires
- " Le shell recevra un 0 comme code de retour " faux,
exit
sans paramètres quitte avec le code détat de la dernière commande exécutée. (voir pub s.opengroup.org/onlinepubs/009695399/utilities/exit.html ) - Merci, mon idée fausse de longue date corrigera la réponse.
- Super, downvote supprimé 🙂
Réponse
Il existe une convention de très longue date (sous Unix) pour le retour- plages de statut:
- 0 signifie succès
- les nombres positifs signifient des problèmes mineurs, mais essentiellement la tâche terminée
- les nombres négatifs signifient une erreur critique (par exemple disque plein, fichier introuvable)
La signification exacte de ces nombres positifs et négatifs individuels dépend du programmeur. Parfois, vous pouvez les choisir pour la compatibilité avec dautres programmes similaires (par exemple, les outils Gnu). @Gnouc en énumère quelques-uns.
Non, je ne connais aucune signification particulière pour le code de sortie 99, je ne lai jamais vu utilisé. Peut-être que cela signifie « Pas assez de bière »
Voir:
- réponse à SO: « Pourquoi renvoyer un numéro derreur négatif? (par exemple.return -EIO) « également
- afficher la liste des codes derreur Unix standard extraits de errno.h , bien quils soient positifs .
Commentaires
- Je nai jamais entendu parler de cette convention Unix. Et vos deux références ne soutiennent pas votre affirmation sur cette convention.
- La première référence le fait. Il y a 1,67 million de résultats Google sur les nombres négatifs positifs de létat de retour unix .
- Il y a un petit nombre de valeurs de retour négatives spécifiées dans POSIX.1 mais ce sont des API de programmation
Answer
Certains programmeurs fourniront de nombreux codes derreur différents à partir de avec 1. Les nouvelles versions peuvent introduire de nouveaux codes derreur spécifiques, donc quel code doit être utilisé pour
« toutes les autres erreurs / erreur non spécifiée »? Les codes de sortie seront tronqués à 255, donc je choisirais 99 comme « autre erreur » .