Toutes les commandes Linux retournent un code d'erreur compris entre 0 et 255.
La valeur 0 représente la valeur vrai (succès de la commande).
Les valeurs supérieur à 0 représente la valeur faux (échec de la commande).
Le code erreur de la dernière commande utilisée est contenu dans la variable $?
$ ls f*
f1chier fichier159159.log fichier159.log fichier161.log fichier1.abc fichier1.c fset
fichier159159159.log fichier159160.log fichier160.log fichier1.a fichier1.b fichier.log
$ echo $?
0
$ ls 2*
ls: impossible d'accéder à 2*: Aucun fichier ou dossier de ce type
$ echo $?
2
Dans un script shell, le test du code de retour d'une commande permet d'effectuer différentes actions.
Un script shell étant lui-même une commande, il est possible de lui faire retourner un code d'erreur avec la commande exit.
Par exemple, il est possible d'indiquer dans un script exit 1 afin d'indiquer une erreur rencontrée et/ou exit 0 afin d'indiquer que tout c'est bien déroulé.
Dans l'exemple suivant, le script test s'il reçoit bien au minimum 2 arguments et renvoi le code erreur 1 si c'est faux.
$ nl ./script.sh
1 #! /bin/bash
2 # Le script doit recevoir au minimum 2 arguments
3 if [ $# -lt 2 ]
4 then
5 # Si le nombre d'arguments est inférieur à 2
6 # on retourne le code erreur 1
7 echo "Nombre arguments incorrect"
8 exit 1
9 else
10 # Si le nombre d'arguments est supérieur ou égal à 2
11 # on retourne le code erreur 0
12 echo "Nombre arguments correct"
13 exit 0
14 fi
$
Exécution du script :
$ ./script.sh
Nombre arguments incorrect
$ echo $?
1
$ ./script.sh test
Nombre arguments incorrect
$ echo $?
1
$ ./script.sh test test2
Nombre arguments correct
$ echo $?
0
$