Nous allons voir comment créer un script bash qui permet de demander une saisie particulière à un utilisateur avant d'exécuter du code tout en gérant la casse et les erreurs.
La première chose à faire est de décider des entrées possibles pour l'utilisateur, ici ça sera :
- o ou O : Oui je veux exécuter le script
- n ou N : Non je ne veux pas exécuter le script
- * : Tout le reste, que nous ne prenons pas en compte et qui servira à retourner une réponse invalide
Pour répondre à ce besoin, voici une première version du script :
read -p "Exécuter le script ? (o/n) " on
case $on in
[oO] )
echo "Exécution des commandes."
echo "Terminé.";;
[nN] )
echo "Annulation."
exit 0;;
* )
echo "Réponse invalide."
exit 1;;
esac
Explication de certaines parties du code :
read -p: Afficher un message et prendre en compte la saisie de l'utilisateur sur une même lignecase: Choix selon une correspondance trouvée avec$on(la saisie utilisateur)[oO]et[nN]: Prise en compte de la casse (o ou O, n ou N)exit 0etexit 1: 0 indique que tout s'est bien passé, 1 indique une erreur ou un échec
Bien que tout fonctionne, il serait intéressant de pouvoir redemander à l'utilisateur de saisir une réponse si celle-ci n'est ni o/O ni n/N plutôt qu'un message d'erreur.
Pour cela, il suffit d'apporter quelques changements en plaçant notamment le code existant dans une boucle comme ceci :
while true; do
read -p "Exécuter le script ? (o/n) " on
case $on in
[oO] )
echo "Exécution des commandes."
echo "Terminé."
break;;
[nN] )
echo "Annulation."
exit 0;;
* )
echo "Erreur, veuillez répondre avec 'o' ou 'n'.";;
esac
done
En plus de la boucle, un break a été inséré dans le code pour le cas [oO] qui permet de quitter la boucle nouvellement ajoutée et exécuter le potentiel code qui pourrait suivre celle-ci.
Il ne reste plus qu'à adapter le code selon les besoins que l'on peut recontrer.