我有以下Bash脚本。如何在按键暂停或暂停一些循环后暂停,但如果我不按任何键它应该循环?
for i in `cat files`
do
echo $i
done
答案 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秒后恢复执行。