按input或等待10秒钟继续

我可以让用户使用read来按下回车键 ,让他通过调用sleep等待。 但我想不出同时做两种方法。 我希望给用户一个select:

Ctrl + C取消, 回车继续或等待10秒钟

我怎样才能做到这一点?

bashread有一个-t选项,您可以在其中指定超时。 从手册:

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

-t timeout:如果在超时秒数内没有读取完整的input行,则导致读取超时并返回失败。 如果读取不是从terminal或pipe道读取input,则此选项无效。

下面的脚本(没有input):

 $ 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 

read内build有一个超时。

 read -t 10 

会做的

从bash参考手册 :

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