Je fais des exercices pratiques.
Ecrivez un script qui se verra attribuer un numéro de mois et traduira ce numéro en un nom de mois. Le résultat sera imprimé sur la sortie standard.
J'ai fait une solution:
#test for number of argument
if [ "$#" -eq 0 ] ;
then
echo -e "No argument."
echo -e "Write a number between 1 and 12."
exit 1
elif [ "$#" -gt 1 ] ;
then
echo -e "More than 1 argument."
echo -e "Write a number between 1 and 12."
exit 1
else
numb=$1
case "$numb" in
1) echo "Month: January";;
2) echo "Month: February";;
3) echo "Month: March";;
4) echo "Month: April";;
5) echo "Month: May";;
6) echo "Month: June";;
7) echo "Month: July";;
8) echo "Month: August";;
9) echo "Month: September";;
10) echo "Month: October";;
11) echo "Month: November";;
12) echo "Month: December";;
*) echo -e "You wrote a wrong number. Try again with writing number between 1 and 12.";;
esac
fi
exit 2
exit 0
Qu'est-ce que exit 1, exit 0
et que exit 2
signifie, et pourquoi les utilisons-nous?
Réponses:
Voici une bonne référence pour les codes de sortie du shell :
Avertissement: L'utilisation du code de sortie approprié n'est pas une exigence et n'est pas appliquée par le shell. Les développeurs peuvent ignorer les instructions s’ils le jugent judicieux.
la source
L'utilisation d'
exit
un nombre est un moyen pratique de signaler le résultat de votre script. Il imite la façon dont les commandes bash génèrent un code de retour. Avec les commandes bash, le code de retour 0 signifie généralement que tout s’exécute avec succès sans erreur.exit
oblige également votre script à arrêter l'exécution à ce moment-là et à revenir à la ligne de commande.Tout code retour supérieur à 0 indique une erreur quelconque, bien que parfois l'erreur ne soit pas critique, pour chaque commande, il devrait être possible de trouver une documentation qui vous indique la signification de chaque code retour.
Vous pouvez obtenir le code de retour de la dernière commande bash en utilisant la variable shell
$?
comme ceci:Lorsque vous utilisez cela dans un script, vous pouvez interroger le code de retour de la même manière, une fois l'exécution terminée. Donc, vous verrez cela avoir:
Est en quelque sorte sans signification, comme vous ne pouvez jamais atteindre la
exit 0
partie.la source
Tout seul,
exit
implique une valeur de sortie égale à zéro ou la réussite de votre script. Il n'est pas nécessaire d'ajouter l'argument zéro à la commande exit pour indiquer que l'opération a abouti. Votre script peut (ou sera probablement) quitter avec succès bien qu'il teste une condition erronée. Dans ce cas, vous voulez spécifiquement qu'il se termine avec la condition d'erreur (ou 1).La
exit
commande dans la dernière ligne ne doit pas nécessairement être là. Il pourrait être appelé avec le zéro ou pas appelé du tout. Sans spécifier l'argument 1 à la commande exit, la réponse à tous les casecho $?
serait zéro.Cependant, en spécifiant l'argument 1 de la commande exit, la réponse à
echo $?
serait serait 1. Utilisez donc l'argument 1 de la commande exit lorsque vous souhaitez spécifier que le script s'est terminé avec une condition d'erreur.la source