GNU/Linux >> Tutoriels Linux >  >> Linux

Que sont les codes de sortie Bash sous Linux

Qu'est-ce qu'un code de sortie

Chaque script, commande ou fichier binaire se termine avec un code de retour. Vous pouvez voir cette valeur dans la variable spéciale $ ? . Les codes de retour sont numériques et se limitent à être compris entre 0 et 255 car un entier non signé de 8 bits est utilisé. Si vous utilisez une valeur de -1, il renverra 255. Chaque exécution se termine par un code de sortie, qu'elle réussisse ou non, par un message d'erreur ou silencieusement. Par exemple :

$ date ; echo $?
Sat Jan 18 08:06:07 IST 2020
0

Comme vous pouvez le voir, le code de sortie est 0 car la commande a été exécutée sans problème. Maintenant, essayons ceci :

$ wrngcmd ; echo $?
-bash: wrngcmd: command not found
127

C'est une commande introuvable car nous venons de taper un tas de caractères sans signification.

Codes de sortie Bash réservés

Si similaire au code de sortie "0" qui indique le succès de la commande, bash a des codes de sortie réservés pour différentes situations. Donc, idéalement, si vous utilisez la commande exit dans un script et que vous devez spécifier un code de sortie, n'utilisez pas ces codes de sortie réservés car ils peuvent créer des résultats contradictoires.

Numéro de code de sortie Signification Exemple Commentaires
1 Catchall pour les erreurs générales soit "var1 =1/0" Erreurs diverses, telles que "diviser par zéro" et autres opérations non autorisées
2 Mauvaise utilisation des commandes internes du shell fonction_vide() {} Mot-clé ou commande manquant
126 La commande invoquée ne peut pas s'exécuter /dev/null Problème d'autorisation ou la commande n'est pas un exécutable
127 « commande introuvable » illegal_command Problème possible avec $PATH ou une faute de frappe
128 Argument invalide pour quitter sortie 3.14159 exit ne prend que des arguments entiers compris entre 0 et 255 (voir la première note de bas de page)
128 +n Signal d'erreur fatale "n" tuer -9 $PPID du script $ ? renvoie 137 (128 + 9)
130 Script terminé par Control-C Ctrl-C Control-C est le signal d'erreur fatale 2, (130 =128 + 2, voir ci-dessus)
255* État de sortie hors limites sortie -1 exit ne prend que des arguments entiers compris entre 0 et 255

Comprenons le code de sortie "128 + n" avec un exemple. Exécutez la boucle sans fin comme indiqué ci-dessous :

#!/bin/bash    
while true; do    
echo ${$}    
done

Si vous exécutez ce script, il imprimera le même PID indéfiniment jusqu'à ce que vous le tuiez ou que vous fassiez un "CTRL+C". Essayons de faire un "CTRL + C" et voyons quel est le code de sortie.

# sh test.sh
....
2582
2582
2582
2582
2582
2582
^C
geeklab$ echo $?
130

Comme vous pouvez le voir, le code de sortie est "128 + 2" c'est-à-dire 130. De même, si nous tuons le script en utilisant "kill -9", le code de sortie devrait être "128 + 9" c'est-à-dire 137. Voyons un exemple de cela aussi :

# sh test.sh
....
2582
2582
2582
...
# kill -9 [pid_of_script]
....
2602
2602
Killed: 9
geeklab$ echo $?
137


Linux
  1. Les codes de sortie de la ligne de commande Bash démystifiés

  2. Comment rechercher les codes de sortie pour les applications ?

  3. Que sont les séparateurs de mots Readline ?

  4. Quels sont les types de serveurs de noms DNS sous Linux

  5. Existe-t-il des codes d'état de sortie standard sous Linux ?

Commande de sortie Bash et codes de sortie

Que sont les inodes sous Linux ?

Invite Bash avec le dernier code de sortie

Que signifie set -e dans un script bash ?

Qu'est-ce que la commande d'exportation est censée faire sous Linux ?

Quelles applications de montage vidéo sont disponibles sous Linux ?