【发布时间】:2011-01-08 11:16:31
【问题描述】:
我有以下 Bash 脚本。如何让它在按键时暂停或在多次循环后暂停,但如果我不按任何键它应该循环?
for i in `cat files`
do
echo $i
done
【问题讨论】:
我有以下 Bash 脚本。如何让它在按键时暂停或在多次循环后暂停,但如果我不按任何键它应该循环?
for i in `cat files`
do
echo $i
done
【问题讨论】:
我想我最初误读了您的问题。您可以随时按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 秒后恢复执行。
【讨论】: