
Comprendre les codes de sortie dans les scripts Shell
Les codes de sortie, communément appelés codes de retour ou états de sortie, sont des signaux numériques transmis par un programme, un script ou une commande au système d’exploitation une fois l’exécution terminée. Ces codes fournissent des informations précieuses sans avoir à parcourir de longs journaux, vous permettant ainsi de diagnostiquer rapidement les pannes et les problèmes.
Dans le domaine des scripts shell, le protocole est simple : une exécution réussie renvoie un code de sortie de 0
, tandis que toute valeur différente de zéro signifie généralement une erreur, avec des valeurs standard existant entre 1
et 255
.
Pour vérifier le code de sortie de la dernière commande exécutée dans des environnements de type Unix (comme Bash ou Zsh), utilisez la variable spéciale $?
. Voici comment procéder :
ls /nonexistent_directoryecho $?

La commande echo $?
révèle le code de sortie de la dernière commande. Un résultat de 0
indique une réussite, tandis que des valeurs comme 1
, 2
ou 127
indiquent diverses erreurs, telles que des fichiers manquants ou des problèmes d’autorisations.
Exploiter les codes de sortie pour le débogage des scripts
L’utilisation de codes de sortie peut grandement améliorer votre capacité à déboguer vos scripts. Ils permettent à votre script d’identifier la réussite ou l’échec des opérations et de déterminer les étapes suivantes en conséquence.
Considérez cet exemple pratique : le script est conçu pour copier un fichier vers un emplacement de sauvegarde et signaler sa réussite :
#!/bin/bash # Attempt to copy the file cp important_file.txt backup/# Verify if the copy was successful if [ $? -eq 0 ]; then echo "Backup successful!" else echo "Backup failed with exit code $?" exit 1 # Send an error code, indicating failure fi
Ici, si la cp
commande renvoie un code de sortie de 0
, cela indique que tout est en ordre. Toute valeur différente de zéro incite le script à afficher un message d’erreur et à se terminer avec un code de sortie de 1
.
Création de codes de sortie personnalisés
Au-delà de la simple vérification des codes de sortie existants, vous pouvez définir des codes personnalisés pour signaler diverses erreurs. Cette pratique améliore la clarté de vos scripts et aide les utilisateurs à identifier les problèmes spécifiques susceptibles de survenir.
À titre d’illustration, considérons le script suivant :
#!/bin/bash # Ensure an argument (filename) is provided. if [ -z "$1" ]; then echo "Usage: $0 <filename>" exit 1 # Exit code 1 indicates missing argument fi # Check for the existence of the file provided if [ ! -f "$1" ]; then echo "Error: File not found" exit 2 # Custom exit code 2 indicates file absence fi
Cette structure permet aux utilisateurs de détecter rapidement les erreurs : le code de sortie 1
signifie qu’aucun argument n’a été fourni, tandis que le code de sortie 2
indique un fichier manquant. Cette clarté est utile, notamment lorsque les scripts font partie de systèmes plus vastes.
Guide des codes de sortie courants
Bien que les codes de sortie puissent varier selon les programmes, certains schémas sont courants, notamment sous Linux et les systèmes de type Unix. Voici un résumé des codes de sortie fréquemment rencontrés :
-
0
: Succès – opération terminée sans problème. -
1
:Une erreur générique s’est produite sans détails spécifiques. -
2
:Utilisation incorrecte des fonctions intégrées du shell, souvent due à des paramètres manquants. -
126
: Commande trouvée mais manque d’autorisations d’exécution. -
127
: Commande non trouvée, soit inexistante, soit mal orthographiée. -
128
:Argument de sortie non valide qui contredit la sémantique du code de sortie. -
130
: Programme arrêté par Ctrl+ C. -
137
:Le processus a été interrompu en raison d’une condition de mémoire insuffisante. -
255
:Une tentative de renvoi d’un code de sortie au-delà de la plage valide s’est produite.
Des applications spécifiques peuvent attribuer leurs propres codes de sortie. Par exemple, la grep
commande renvoie une valeur 0
en cas de correspondance, 1
d’absence de correspondance et 2
en cas d’erreur. Les développeurs utilisent généralement toutes les valeurs comprises entre 0
et 255
dans les environnements de type Unix.
Utilisation des codes de sortie pour enchaîner les commandes
Les scripts Bash proposent deux opérateurs, &&
et ||
, vous permettant de lier des commandes en fonction du succès (code de sortie 0
) ou de l’échec (sortie non nulle) des commandes précédentes :
-
&&
: Exécute la commande suivante uniquement si la précédente réussit. -
||
: Exécute la commande suivante si la précédente échoue.
Par exemple, vous pourriez tenter de créer un répertoire, puis d’y accéder. Si l’une ou l’autre de ces actions échoue, un message d’erreur indiquera le problème :
mkdir new_directory && cd new_directory || echo "Failed to create and access directory"
Dans ce cas, la commande mkdir new_directory
tente d’établir le répertoire. Si cela fonctionne, elle passe immédiatement à cd new_directory
. En cas d’échec, l’ ||
opérateur s’active, déclenchant l’affichage du message d’erreur.
Réflexions finales
Bien qu’ils puissent paraître anodins, les codes de sortie constituent un aspect crucial des fonctionnalités de la ligne de commande. Ils établissent une méthode standardisée permettant aux programmes de communiquer leurs succès et leurs échecs, un élément essentiel à l’orchestration de systèmes complexes.
Si vous vous lancez dans l’univers des interfaces de ligne de commande, veillez à vérifier echo $?
si les commandes ne produisent pas les résultats escomptés. Vous maîtriserez rapidement l’art d’utiliser les codes de sortie dans vos scripts et reconnaîtrez leur rôle essentiel dans l’amélioration de la communication entre les commandes.
Questions fréquemment posées
1. Que signifient les codes de sortie dans les scripts shell ?
Les codes de sortie servent de signaux numériques indiquant la réussite ou l’échec des commandes ou des scripts dans les scripts shell. Un code 0
indique la réussite, tandis que des valeurs non nulles indiquent diverses erreurs.
2. Comment puis-je vérifier le code de sortie d’une commande dans Bash ?
Pour vérifier le code de sortie de la dernière commande exécutée, utilisez la commande echo $?
. Le code de sortie numérique s’affiche alors pour le diagnostic.
3. Puis-je définir mes propres codes de sortie dans un script ?
Absolument ! Vous pouvez définir des codes de sortie personnalisés dans vos scripts pour signaler des conditions d’erreur spécifiques. Cela rend vos scripts plus informatifs et conviviaux.
Laisser un commentaire ▼