Ответ 1
В bash
параметр read
имеет параметр -t
, где вы можете указать тайм-аут. С manpage:
read [-ers] [-u fd] [-t timeout] [-a aname] [-p prompt] [-n nchars] [-d delim] [name ...]
-t timeout:
заставляет считать тайм-аут и возвращать сбой, если полная строка ввода не читается в течение таймаута секунд. Эта опция не действует, если чтение не считывает ввод с терминала или канала.
Стенограмма ниже (без нажатия 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
Другой, нажав ENTER через пару секунд:
$ 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
И еще один, нажав 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