Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Shell脚本-不要等待读取_Linux_Bash_Shell - Fatal编程技术网

Linux Shell脚本-不要等待读取

Linux Shell脚本-不要等待读取,linux,bash,shell,Linux,Bash,Shell,这是一个倒计时10秒的循环($rtime)。 如果您想更早地跳出循环,则必须键入n。 我能不能不等到read得到一个输入,因为此时循环总是 在读取时卡住并在那里等待输入 ct=$(date +"%s") while [ $(( $ctn - $ct )) -le $rtime ] ; do ctn=$(date +"%s") read r if [ "$r" = "n" ] ; then break

这是一个倒计时10秒的循环(
$rtime
)。 如果您想更早地跳出循环,则必须键入n。 我能不能不等到read得到一个输入,因为此时循环总是 在读取时卡住并在那里等待输入

    ct=$(date +"%s")
    while [ $(( $ctn - $ct )) -le $rtime ] ; do
        ctn=$(date +"%s")
        read r 
        if [ "$r" = "n" ] ; then
            break
        fi
    done

您可以指定读取<代码>的超时时间:

read -t 1 r

如果在一秒钟后没有输入任何内容,这将导致它完成。

或者只使用
read-t$rtime r
并完全避免此处的循环(尽管这将在任何输入上中断,而不仅仅是
n
。当然!但您可能希望在循环中执行其他操作(例如打印倒计时),这就是我选择此选项的原因:)谢谢你的快速回复!是的,循环中还有一些其他内容。:)也许这对OP来说是显而易见的,但是为了完整性:对于{10…1}中的i,循环可以写成
;执行
以获得10次迭代,向后计数。