2010-12-10 90 views
3

Comment demander à l'utilisateur d'entrer et continuer avec mon script si aucune réponse n'est reçue dans un délai prédéfini.Demande à l'utilisateur d'entrer et d'annuler l'invite après avoir attendu x secondes

Par exemple ceci est quelque chose comme ce que j'ai en ce moment:

read -p "Would you like to reboot? (y/n) " yn 
case $yn in 
    [Yy]*) echo "shutting down"; break;; 
    [Nn]*) echo "cancelled shutdown"; break;; 
    *) echo "Please answer y or n.";; 
esac 

Cependant, je veux l'invite à s'asseoir sur le terminal pendant 2 minutes et si aucune réponse n'a été reçue continuer avec mon script. J'ai des pensées vagues que cela peut être possible en exécutant l'entrée dans un sous-shell, mais je ne saurais pas comment exécuter un timeout en même temps. Le pseudo-code de délai d'attente pourrait être quelque chose comme:

sleep 200s 
kill the prompt 
continue... 

Répondre

2

Utilisez l'option -t de read.

+0

Brillante et simple. Merci – Inti