ユーザーに押すように頼むことができます Enter read
を使用し、sleep
を呼び出して待機させます。しかし、両方を同時に行う方法は考えられません。ユーザーに選択肢を与えてほしい:
- 押す Ctrl+C キャンセルします、 Enter続行するか、10秒だけ待つ
どうやってやるの?
bash
で、read
には-t
オプションでは、タイムアウトを指定できます。マンページから:
read [-ers] [-u fd] [-t timeout] [-a aname] [-p Prompt] [-n nchars] [-d delim] [name ...]
-t timeout:
入力の完全な行が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
もう1つは、数秒後に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
read
ビルトインにはタイムアウトがあります。
read -t 10
それをします
bashリファレンスマニュアル から:
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p Prompt]
[-t timeout]
[-u fd] [name ...]