scripts script programas operaciones ejemplos comandos comando aritmeticas bash interactive

bash - script - Presione enter o espere 10 segundos para continuar



script linux ejemplos (3)

Puedo pedirle al usuario que presione Entrar usando read , y que lo espere llamando a sleep . Pero no puedo pensar en una forma de hacer ambas cosas al mismo tiempo. Me gustaría que se le dé la opción al usuario:

Presiona Ctrl + C para cancelar, ingresa para continuar o simplemente espera 10 segundos

¿Cómo puedo hacer eso?


Del manual de referencia de bash :

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]


El builtin de read tiene un tiempo de espera.

read -t 10

lo haré


En bash , read tiene una opción -t donde puedes especificar un tiempo de espera. De la página de manual:

read [-ers] [-u fd] [-t timeout] [-a aname] [-p prompt] [-n nchars] [-d delim] [name ...]

-t timeout: causa que se -t timeout: lectura y retorno si no se lee una línea completa de entrada dentro de un tiempo de espera de segundos. Esta opción no tiene efecto si la lectura no está leyendo la entrada del terminal o una tubería.

Transcripción a continuación (sin presionar 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

Otro, presionando ENTER luego de un par de segundos:

$ 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

Y otra, presionando 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