Je veux mettre en pause l'entrée dans un script shell, et invite l'utilisateur pour le choix. La norme de "Oui, Non, ou d'Annuler' type de question. Comment puis-je accomplir ceci dans une typique invite bash?
Réponses
Trop de publicités?Le plus simple et le plus largement disponibles méthode pour obtenir la saisie de l'utilisateur à l'invite du shell est la 'lecture' de la commande. La meilleure façon d'illustrer son utilisation est une simple démonstration:
while true; do
read -p "Do you wish to install this program?" yn
case $yn in
[Yy]* ) make install; break;;
[Nn]* ) exit;;
* ) echo "Please answer yes or no.";;
esac
done
Une autre méthode, a souligné Steven Huwig, est bash"sélectionnez"commande". Voici le même exemple à l'aide de select:
echo "Do you wish to install this program?"
select yn in "Yes" "No"; do
case $yn in
Yes ) make install; break;;
No ) exit;;
esac
done
À choisir, vous n'avez pas besoin de désinfecter l'entrée... il vous invite avec vos choix, et vous tapez un numéro correspondant à votre choix. Sélectionnez également les boucles automatiquement... il n'y a pas besoin d'un "while true' boucle pour recommencer si elles donnent une entrée non valide.
Vous pouvez utiliser le haut- lire de commande. Utiliser l' -p
option pour inviter l'utilisateur à une question.
Depuis BASH4, vous pouvez maintenant utiliser -i
de suggérer une réponse, alors l'utilisateur n'avez qu'à appuyer sur return
entrer :
read -e -p "Enter the path to the file: " -i "/usr/local/etc/" FILEPATH
(Mais n'oubliez pas d'utiliser le "readline" option -e
afin de permettre l'édition de la ligne avec les touches fléchées)
Bash a sélectionnez à cet effet.
select result in Yes No Cancel
do
echo $result
done