Linux 停止无限循环并在循环结束时中断
我在bash中运行一个无限while循环,它有一个计数元素Linux 停止无限循环并在循环结束时中断,linux,bash,Linux,Bash,我在bash中运行一个无限while循环,它有一个计数元素 while : do #stuff including counting trap break int done 这在很大程度上是我想要的。当我点击Ctrl+C时,循环停止,但脚本继续。但是,循环停止在循环的中间,这意味着最终计数是不准确的。 有没有办法让这个循环在最后中断 不必执行break,您可以设置标志,并在设置标志时在指定位置中断循环。请注意,在回路中,回路头也可以视为回路的最末端 state=run trap
while :
do
#stuff including counting
trap break int
done
这在很大程度上是我想要的。当我点击Ctrl+C时,循环停止,但脚本继续。但是,循环停止在循环的中间,这意味着最终计数是不准确的。
有没有办法让这个循环在最后中断 不必执行
break
,您可以设置标志,并在设置标志时在指定位置中断循环。请注意,在回路中,回路头也可以视为回路的最末端
state=run
trap 'state=end' int
while [ "$state" = run ]
do
# stuff
done
如果你想在中间使用某处< < /P>
state=run
trap 'state=end' int
while :
do
# stuff
[ "$state" = end ] && break
# more stuff
done
通过用{1..20}中i的替换#stuff
,可以很好地测试行为;不要打印。;睡眠0.1;完成;回声
:
正如我们在上面的片段中所看到的,外部循环完成其当前迭代(
#stuff
)直到最后。您可以设置一个标志,并在设置标志时在指定位置中断循环,而不是执行中断。请注意,在回路中,回路头也可以视为回路的最末端
state=run
trap 'state=end' int
while [ "$state" = run ]
do
# stuff
done
如果你想在中间使用某处< < /P>
state=run
trap 'state=end' int
while :
do
# stuff
[ "$state" = end ] && break
# more stuff
done
通过用{1..20}中i的替换#stuff
,可以很好地测试行为;不要打印。;睡眠0.1;完成;回声
:
正如我们在上面的片段中所看到的,外部循环完成其当前迭代(#stuff
),直到最后。如果这里的一个答案解决了您的问题,请接受该答案。接受答案结束此问题,并奖励接受答案的作者。如果你的问题没有解决,请考虑解释原因。如果其中一个答案解决了你的问题,请接受这个答案。接受答案结束此问题,并奖励接受答案的作者。如果你的问题没有解决,请考虑解释原因。