Tableau C-1. Codes de sortie << réservés >>
Code de sortie | Signification | Exemple | Commentaires |
---|---|---|---|
1 | standard pour les erreurs générales | let "var1 = 1/0" | erreurs diverses, comme une << division par zéro >> |
2 | mauvaise utilisation de commandes intégrées, d'après la documentation de Bash | Rarement vue, généralement utilisation du code de sortie 1 | |
126 | la commande appelée ne peut s'exécuter | problème de droits ou commande non exécutable | |
127 | << commande introuvable >> | problème possible avec $PATH ou erreur de frappe | |
128 | argument invalide pour exit | exit 3.14159 | exit prend seulement des arguments de type entier compris entre 0 et 255 |
128+n | signal << n >> d'erreur fatale | kill -9 $PPID d'un script | $? renvoie 137 (128 + 9) |
130 | script terminé avec Control-C | Control-C est le signal 2 d'erreur fatale, (130 = 128 + 2, voir ci-dessus) | |
255* | code de sortie en dehors de la limite | exit -1 | exit prend seulement des arguments de type entier compris entre 0 et 255 |
D'après la table, les codes de sortie 1 - 2, 126 - 165, et 255 [1] ont une signification particulière, et devraient donc être évités pour les paramètres de sortie définis par l'utilisateur. Finir un script avec exit 127 va certainement causer une certaine confusion lors du débogage (est-ce que l'erreur est << commande introuvable >> ou une erreur définie par l'utilisateur?). Néanmoins, beaucoup de scripts utilisent un exit 1 comme code de sortie générique en cas d'erreur. Le code de sortie exit 1 est utilisé dans tellement de cas d'erreur qu'il ne devrait pas ajouter d'ambiguité, mais, d'un autre côté, il ne donnera probablement pas beaucoup d'information non plus.
Il y a eu un essai de normalisation des codes de sortie(voir /usr/include/sysexits.h), mais il avait pour cible les programmeurs C et C++. Un standard similaire pour la programmation de script pourrait être approprié. L'auteur de ce document propose de restreindre les codes de sortie définis par l'utilisateur à l'intervalle 64 - 113 (en plus du code 0, en cas de succès), pour se conformer au standard C/C++. Ceci permettrait 50 codes valides, et faciliterait le débogage des scripts.
Tous les codes de sortie définis par l'utilisateur dans les exemples accompagnant ce document se conforment maintenant à ce standard, sauf dans les cas de redéfinition, comme dans Exemple 9-2.
![]() | Lancer un $? à partir de la ligne de commande après un script shell donne des résultats cohérents avec la table ci-dessus seulement à partir de l'invite Bash ou sh. L'utilisation de cette commande dans un shell C ou tcsh peut donner d'autres valeurs dans certains cas. |
[1] | Des valeurs de sortie en dehors de limites peuvent donner des codes de sortie imprévus. Par exemple, exit 3809 donne un code de sortie 225. |