Naciśnij enter lub poczekaj 10 sekund, aby kontynuować
Mogę poprosić użytkownika, aby nacisnął Enter używając read
i kazał czekać, dzwoniąc sleep
. Ale nie mogę wymyślić sposobu na robienie obu w tym samym czasie. Chciałbym, aby użytkownik otrzymał wybór:
Naciśnij Ctrl+C Aby anulować, wpisz Aby kontynuować lub po prostu odczekaj 10 sekund
Jak mogę to zrobić?3 answers
W bash
, read
posiada opcję -t
, w której można określić limit czasu. Ze strony Man:
read [-ers] [-u fd] [-t timeout] [-a aname] [-p prompt] [-n nchars] [-d delim] [name ...]
-t timeout:
powoduje odczyt do time out i zwraca failure, jeśli pełna linia wejściowa nie zostanie odczytana w ciągu sekund timeout. Opcja ta nie ma wpływu, jeśli read nie jest odczytem wejścia z terminala lub rury.
Zapis poniżej (bez wciśnięcia 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
Kolejny, wciskając ENTER po kilku sekundach:
$ 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
I kolejny, uderzający 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-28 14:31:55
Wbudowany read
ma limit czasu.
read -t 10
Zrobi to
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-28 14:25:34
Z podręcznika referencyjnego bash :
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt]
[-t timeout]
[-u fd] [name ...]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-28 14:27:25