暂停Bash循环

时间:2011-01-08 11:16:32

标签: bash loops

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

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

1 个答案:

答案 0 :(得分:4)

我想我最初误解了你的问题。您可以随时按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

您可以使用-t的{​​{1}}选项让它超时并继续执行:

read

如果用户未按下for i in `cat files` do echo $i read -t 1 done 键,上述内容将在1秒后恢复执行。