В bash
, read
есть опция -t
, в которой можно указать время ожидания.Из справочной страницы:
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 после aпара секунд:
$ 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