1621 votes

Comment puis-je l'invite pour l'entrée dans un Linux shell script?

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?

1786voto

Myrddin Emrys Points 7261

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.

355voto

Pistos Points 8997
echo "Please enter some input: "
read input_variable
echo "You entered: $input_variable"

171voto

xaccrocheur Points 2083

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)

115voto

Steven Huwig Points 8029

Bash a sélectionnez à cet effet.

select result in Yes No Cancel
do
    echo $result
done

58voto

serg Points 321
read -p "Are you alright? (y/n) " RESP
if [ "$RESP" = "y" ]; then
  echo "Glad to hear it"
else
  echo "You need more bash programming"
fi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X