【问题标题】:Pause Bash loop暂停 Bash 循环
【发布时间】:2011-01-08 11:16:31
【问题描述】:

我有以下 Bash 脚本。如何让它在按键时暂停或在多次循环后暂停,但如果我不按任何键它应该循环?

for i in `cat files` 
do
    echo $i
done

【问题讨论】:

    标签: bash loops


    【解决方案1】:

    我想我最初误读了您的问题。您可以随时按Ctrl+Z 暂停活动进程,并使用内置fg 恢复它。

    为了使脚本在执行多次迭代后暂停,您可以使用计数器变量和modulo 运算符%

    i=1
    for f in `cat files`; do
        echo $f
        if (( i % 10 == 0 )); then  # pause every 10 iterations
            read
        fi
        let "i++"
    done
    

    我原来的答案是:

    您可以使用内置的read 让shell 等待,直到用户按下RETURN 键(或EOF 键,Ctrl+D):

    for i in `cat files`
    do
        echo $i
        read
    done
    

    您可以使用read-t 选项使其超时并继续执行:

    for i in `cat files`
    do
        echo $i
        read -t 1
    done
    

    如果用户不按RETURN 键,上述内容将在 1 秒后恢复执行。

    【讨论】:

    • 这使脚本等待任何键启动每个循环滴答声
    • @newmusicblog,不,不会。再说一次,您刚刚将该要求添加到您的问题中:)
    • 如果我使用这个脚本,它只会回显一个变量,然后等待|||我需要它无限循环,直到我按下暂停
    • 是的,这很好,它有效。除此之外,任何想法如何让它在多次循环后停止?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多