2012-02-28 12 views
46

を入力してと入力してreadを入力し、sleepに電話をかけます。しかし、私は同時に両方の方法を考えることはできません。Enterキーを押すか、10秒間待ち続ける

押しCtrlキー + Cは、私はそれをどのように行うことができます

継続するを入力するか、わずか10秒

を待つ 、キャンセルする:私は選択肢を与えられることに、ユーザーが好きなのでしょうか?

答えて

89

bashで行います、readは、あなたがタイムアウトを指定することができ-tオプションがあります。 manページから:

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 
+4

このような詳細な回答が与えられたとき、私は絶対にそれを愛します。あなたへの誇り! – Brian

+0

ubuntu。 -t - 不正なオプション – ses

+0

@sesの場合、外部ツールではなくbash組み込み関数を使用していることを確認してください。 – paxdiablo

13

read内蔵のタイムアウトがあります。

read -t 10 

はそれが

1

bash reference manual

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt][-t timeout][-u fd] [name ...]

関連する問題