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.