Vérifier le code de sortie dans Bash

Muhammad Husnain 21 juin 2022
Vérifier le code de sortie dans Bash

Ce didacticiel décrit plusieurs méthodes pour obtenir et afficher l’état de sortie d’une instruction dans Bash. Nous discuterons d’abord de l’utilisation d’une simple instruction if pour obtenir le statut de sortie, après quoi nous discuterons des alternatives et des notations abrégées pour obtenir le statut de sortie.

Vérifier le code de sortie dans Bash

Le statut de sortie est essentiellement un nombre entier qui nous indique si la commande a réussi ou non. De manière non intuitive, un état de sortie de 0 indique un succès, et toute valeur différente de zéro indique un échec/une erreur.

Cette solution non intuitive permet à différents codes d’erreur de représenter différentes erreurs. Par exemple, si une commande n’est pas trouvée, l’état de sortie 127 sera renvoyé.

La façon de vérifier le code de sortie dans Bash est d’utiliser le $? commande. Si vous souhaitez sortir le statut de sortie, cela peut être fait par :

# your command here
testVal=$?
echo testVal

Nous savons que des codes de sortie non nuls sont utilisés pour signaler des erreurs. Si nous voulons vérifier les erreurs en général, nous pouvons écrire un petit script avec la commande en question et une instruction if qui vérifie si le code de sortie est d’une erreur (non nul) ou si le code de sortie indique une exécution correcte .

# your command here
testVal=$?
if [$testVal -ne 0]; then
    echo "There was some error"
fi
exit $testVal

Une notation abrégée peut être faite en utilisant un test sur le $? commande. Un exemple minimal de ce code peut être :

# your command here
test $? -eq 0 || echo "There was some error"

Pour une meilleure compréhension de la déclaration ci-dessus, nous pouvons la développer.

# your command here
exitStat = $?
test $exitStat -eq 0 && echo "No error! Worked fine" || echo "There was some error";
exit $exitStat

Ci-dessus, on peut voir le message "No error! Worked fine" en cas d’exécution réussie, et le message d’erreur en cas d’échec.

Remarques importantes et solutions alternatives possibles

Si des codes de sortie sont utilisés pour voir si la commande est exécutée correctement ou non, nous avons une alternative beaucoup plus simple.

# define your_command here
# your_command = enter a command here
if your_command; then
    echo command returned true
else
    echo command returned an error
fi

Dans ce cas, nous obtenons généralement le même résultat qu’avec les deux premières options. De plus, obtenir des informations spécifiques sur le code de sortie ou obtenir le code de sortie spécifique nécessite d’exécuter $? manuellement.

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn