Code de sortie de bash de la dernière commande

Code de sortie de bash de la dernière commande

Lorsqu'une commande bash est exécutée, elle laisse derrière elle le code de sortie, quelle que soit l'exécution réussie ou infructueuse. L'examen du code de sortie peut offrir un aperçu utile du comportement de la commande de dernière course.

Dans ce guide, consultez comment vérifier le code de sortie Bash de la dernière commande et quelques usages possibles.

Code de sortie de bash

Chaque commande Unix / Linux exécutée par le script de shell ou l'utilisateur laisse un statut de sortie. C'est un numéro entier qui reste inchangé à moins que la commande suivante ne soit exécutée. Si le code de sortie est 0, alors la commande a réussi. Si le code de sortie n'est pas nul (1-255), alors il signifie une erreur.

Il existe de nombreux usages potentiels du code de sortie bash. Le plus évident est, bien sûr, de vérifier si la dernière commande est correctement exécutée, surtout si la commande ne génère aucune sortie.

Dans le cas de Bash, le code de sortie de la commande précédente est accessible à l'aide de la variable de shell «$?".

Vérification du code de sortie Bash

Lancez un terminal et exécutez n'importe quelle commande.

$ date

Vérifiez la valeur de la variable shell «$?”Pour le code de sortie.

$ echo $?

Comme la commande «Date» s'est déroulée avec succès, le code de sortie est 0. Que se passerait-il s'il y avait une erreur?

Essayons d'exécuter une commande qui n'existe pas.

$ ABCD

Vérifiez le code de sortie.

$ echo $?

C'est une valeur non nulle, indiquant que la commande précédente ne s'exécute pas correctement.

Maintenant, jetez un œil à la commande suivante:

$ échantillon de chat.txt | grep "pièce"

Lorsque vous travaillez avec une commande qui a un ou plusieurs tuyaux, le code de sortie sera du dernier code exécuté dans le tuyau. Dans ce cas, c'est la commande grep.

Comme la commande GREP a réussi, ce sera 0.

$ echo $?

Dans cet exemple, si la commande grep échoue, le code de sortie sera non nul.

$ échantillon de chat.txt | grep "ABCD"
$ echo $?

Intégration du code de sortie dans les scripts

Le code de sortie peut également être utilisé pour les scripts. Un moyen simple de l'utiliser est en l'attribuant à une variable de coquille et en travaillant avec lui. Voici un exemple de script shell qui utilise le code de sortie comme condition pour imprimer une sortie spécifique.

$ #!/ bac / bash
$ echo "Hello World"
$ status = $?
$ [$ status -eq 0] && echo "Commande réussie" || Echo "Command sans succès"

Lors de l'exécution, le script générera la sortie suivante.

Maintenant, voyons ce qui se passe lorsqu'il y a une commande non valide à exécuter.

$ #!/ bac / bash
$ la commande aléatoire
$ status = $?
$ [$ status -eq 0] && echo "Commande réussie" || Echo "Command sans succès"

Lors de l'exécution, la sortie sera différente.

Explication de la valeur du code de sortie

Lorsque le code de sortie est non nul, la valeur varie de 1 à 255. Maintenant, que signifie cette valeur?

Bien que la valeur soit limitée, l'explication de chaque valeur est unique au programme / script. Par exemple, «LS» et «Grep» ont des explications différentes pour le code d'erreur 1 et 2.

$ man ls
$ man grep

Définition de l'état de sortie dans le script

Lors de l'écriture d'un script, nous pouvons définir des valeurs de code de sortie personnalisées. C'est une méthode utile pour un débogage plus facile. Dans Bash Scripts, c'est la commande «Exit» suivie de la valeur du code de sortie.

$ exit

Selon la convention, il est recommandé d'attribuer le code de sortie 0 pour une exécution réussie et d'utiliser le reste (1-255) pour des erreurs possibles. Lorsque vous atteignez la commande de sortie, l'exécution du script shell sera terminée, alors faites attention à son placement.

Jetez un œil au script shell suivant. Ici, si la condition est remplie, le script se terminera avec le code de sortie 0. Si la condition n'est pas remplie, alors le code de sortie sera 1.

$ #!/ bac / bash
$ si [["$ (whoami)" != root]]; alors
$ echo "Pas d'utilisateur racine."
$ exit 1
$ fi
$ echo "utilisateur racine"
$ exit 0

Vérifiez le résultat de l'exécution de ce script sans privilège sudo ni utilisateur «racine».

$ ./goûter.shot
$ echo $?

Dernières pensées

Ce guide montre ce que sont les codes de sortie et comment les utiliser. Il montre également comment attribuer des codes de sortie appropriés dans un script bash.

Intéressé par les scripts de bash? L'une des façons les plus simples de commencer est d'écrire vos propres scripts. Consultez ce guide simple sur la façon d'écrire un simple script bash.

Happy Computing!