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.
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