Sur bash
, read
a un -t
où vous pouvez spécifier un délai d'attente. De la page de manuel :
read [-ers] [-u fd] [-t timeout] [-a aname] [-p prompt] [-n nchars] [-d delim] [name ...]
-t timeout:
provoque le dépassement du délai de lecture et le retour d'un échec si une ligne complète d'entrée n'est pas lue dans les secondes du délai. Cette option n'a aucun effet si read n'est pas en train de lire une entrée depuis le terminal ou un tube.
Transcription ci-dessous (sans appuyer sur la touche ENTER) :
$ date ; read -t 10 -p "Hit ENTER or wait ten seconds" ; echo ; date
Tue Feb 28 22:29:15 WAST 2012
Hit ENTER or wait ten seconds
Tue Feb 28 22:29:25 WAST 2012
Un autre, en appuyant sur ENTER après quelques secondes :
$ date ; read -t 10 -p "Hit ENTER or wait ten seconds" ; date
Tue Feb 28 22:30:17 WAST 2012
Hit ENTER or wait ten seconds
Tue Feb 28 22:30:19 WAST 2012
Et un autre, en appuyant sur CTRL-C :
$ date ; read -t 10 -p "Hit ENTER or wait ten seconds" ; echo ; date
Tue Feb 28 22:30:29 WAST 2012
Hit ENTER or wait ten seconds