Нажмите enter или подождите 10 секунд, чтобы продолжить
Я могу попросить пользователя нажать введите С помощью read
, и пусть он подождет, позвонив sleep
. Но я не могу придумать способ сделать это одновременно. Я хотел бы, чтобы пользователю был предоставлен выбор:
пресс Ctrl+C отменить, введите чтобы продолжить или просто подождать 10 секунд
Как я могу это сделать?
3 ответа:
на
bash
,read
есть-t
опция, где вы можете указать тайм-аут. Из man-страницы:
read [-ers] [-u fd] [-t timeout] [-a aname] [-p prompt] [-n nchars] [-d delim] [name ...]
-t timeout:
причина чтения тайм-аута и возврата сбоя, если полная строка ввода не читается в течение тайм-аута секунд. Эта опция не действует, если read не считывает входные данные с терминала или трубы.расшифровка ниже (без нажатия 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
С справочное руководство bash:
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt]
[-t timeout]
[-u fd] [name ...]