...il existe des coins sombres dans le shell Bourne et les gens les utilisent tous. | |
Chet Ramey |
La commande exit est utilisable pour terminer un script, comme dans un programme C. Elle peut également renvoyer une valeur, qui sera disponible pour le processus parent du script.
Chaque commande renvoie un code de sortie (quelque fois nommé état de retour ). Une commande ayant réussi renvoie un 0, alors qu'une ayant échoué renvoie une valeur différente de zéro qui est habituellement interprétable comme un code d'erreur. Les commandes, programmes et utilitaires UNIX ayant bien fonctionné, renvoient un code de sortie 0 relatif à leur exécution réussie, bien qu'il y ait quelques exceptions.
De même, les fonctions dans un script et le script lui-même renvoient un code de sortie. La dernière commande exécutée dans la fonction ou le script détermine le code de sortie. A l'intérieur d'un script, une commande exit nnn peut être employée pour retourner un code de sortie nnn au shell. (nnn doit être un nombre décimal compris entre 0 et 255).
![]() | Lorsqu'un script se termine avec un exit sans paramètres, le code de sortie du script est le code de sortie de la dernière commande exécutée dans le script (sans compter le exit). |
$? lit le code de sortie de la dernière commande exécutée. Après la fin d'une fonction, $? donne le code de sortie de la dernière commande exécutée dans la fonction. C'est la manière de Bash de donner aux fonctions une << valeur de retour >>. Après la fin d'un script, un $? sur la ligne de commande indique le code de sortie du script, c'est-à-dire celui de la dernière commande exécutée dans le script qui est, par convention, 0 en cas de succès ou un entier compris entre 1 et 255 en cas d'erreur.
Exemple 6-1. exit / code de sortie
#!/bin/bash echo bonjour echo $? # Code de sortie 0 renvoyé car la commande s'est correctement # exécutée. lskdf # Commande non reconnue. echo $? # Code de sortie différent de zéro car la commande a échoué. echo exit 113 # Retournera 113 au shell. # Pour vérifier ceci, tapez "echo $?" une fois le script terminé. # Par convention, un 'exit 0' indique un succès, #+ alors qu'un code de sortie différent de zéro indique une erreur ou une #+ condition anormale. |
$? est particulièrement utile pour tester le résultat d'une commande dans un script (voir Exemple 12-27 et Exemple 12-13).
![]() | Le !, qualificateur logique du << non >>, inverse le résultat d'un test ou d'une commande et ceci affecte son code de sortie. |
![]() | Certains codes de sortie ont une signification spéciale et ne devraient pas être employés par l'utilisateur dans un script. |
Précédent | Sommaire | Suivant |
Guillemets | Niveau supérieur | Tests |