GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel sur l'état de sortie de Bash Shell avec des exemples pratiques

Dans notre article d'introduction bash, nous avons appris qu'un fichier shell-script contient une liste de commandes à exécuter par l'interpréteur shell. Dans cet article, passons en revue les commandes shell et ses composants internes.

Une commande est une séquence de mots. Le premier mot indique la commande à exécuter et les mots restants sont passés en tant qu'arguments, où les arguments peuvent être les options ou les paramètres de la commande.

Certaines des commandes Unix courantes que vous exécutez sur la ligne de commande sont des commandes shell. Par exemple, les commandes ls, lpr et grep.

$ ls -alF

$ lpr filename

$ grep "string" filename

État de sortie de la commande Shell

La valeur de retour d'une commande est son état de sortie, ou 128 + N si la commande se termine par le signal N. L'état de sortie permet de vérifier le résultat (succès/échec) de l'exécution de la commande. Si l'état de sortie est zéro, la commande est un succès. Si la commande échoue, l'état de sortie sera différent de zéro.

Valeur de sortie État de sortie
0 (zéro) Succès
Non nul Échec
2 Utilisation incorrecte
127 Commande introuvable
126 Pas un exécutable

$ ? Variable d'interpréteur de commandes

Le nom de la variable shell $? est une variable intégrée spéciale qui a le statut de sortie de la dernière commande exécutée.

  • Après l'exécution de la fonction shell, $ ? renvoie l'état de sortie de la dernière commande exécutée dans une fonction.
  • Après l'exécution du script shell, $ ? renvoie l'état de sortie de la dernière commande exécutée dans le script.

Exemple de script Shell qui explique l'état de sortie de la commande Shell

Le script shell exitstatus.sh suivant montre des exemples de divers états de sortie de commande shell.

$ cat exitstatus.sh
#! /bin/bash

echo -e "Successful execution"
echo -e "====================="
echo "hello world"
# Exit status returns 0, because the above command is a success.
echo "Exit status" $? 

echo -e "Incorrect usage"
echo -e "====================="
ls --option
# Incorrect usage, so exit status will be 2.
echo "Exit status" $? 

echo -e "Command Not found"
echo -e "====================="
bashscript
# Exit status returns 127, because bashscript command not found
echo "Exit status" $? 

echo -e "Command is not an executable"
echo -e "============================="
ls -l execution.sh
./execution.sh
# Exit status returns 126, because its not an executable.
echo "Exit status" $?

Maintenant, exécutez exitstatus.sh ci-dessus pour voir les différentes statues de sortie données par l'exemple de script shell.

$ bash exitstatus.sh
Successful execution
=====================
hello world
Exit status 0
Incorrect usage
=====================
ls: unrecognized option `--option'
Try `ls --help' for more information.
Exit status 2
Command Not found
=====================
exitstaus.sh: line 15: bashscript: command not found
Exit status 127
Command is not an executable
=============================
-rw-r--r-- 1 root root 659 Mar  9 13:36 execution.sh
exitstatus.sh: line 21: ./execution.sh: Permission denied
Exit status 126

Remarque :La vérification de la valeur de retour d'une fonction ou d'une commande est l'une des principales responsabilités d'un programmeur. Cela devrait devenir votre seconde nature lorsque vous écrivez n'importe quel code.


Linux
  1. Tutoriel vim avec des exemples de commandes

  2. Le tutoriel Ultimate Bash Array avec 15 exemples

  3. 15 commandes intégrées utiles de Bash Shell (avec exemples)

  4. Commande Linux rsync avec des exemples pratiques

  5. Commande d'écho avec des exemples pratiques

Bash Scripting - Commande Printf expliquée avec des exemples

La commande Wait sous Linux expliquée avec des exemples pratiques

Tutoriel sur la commande de recherche Linux (avec exemples)

Tutoriel d'introduction aux scripts Bash avec 5 exemples pratiques

Le didacticiel Ultimate Tar Command avec 10 exemples pratiques

Tutoriel sur les fonctions Bash Shell avec 6 exemples pratiques