gpt4 book ai didi

linux - 停止无限循环并在循环结束时中断

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:32:49 26 4
gpt4 key购买 nike

我在 bash 中运行一个无限的 while 循环,它有一个计数元素。

while :
do
#stuff including counting
trap break int
done

这在很大程度上符合我的要求。当我按下 Ctrl+C 时,循环停止,但脚本继续。但是,循环在循环中间停止,这意味着最终计数不准确。

有没有办法让这个循环在最后中断?

最佳答案

您可以设置一个标志并在设置标志时在指定位置中断循环,而不是执行 break。请注意,在循环中,循环头也可以看作是循环的结尾。

state=run
trap 'state=end' int
while [ "$state" = run ]
do
# stuff
done

如果你想在中间某处中断使用

state=run
trap 'state=end' int
while :
do
# stuff
[ "$state" = end ] && break
# more stuff
done

您可以通过将 # stuff 替换为 for i in {1..20} 来安静地测试行为;做 printf .; sleep 0.1;完毕; echo :

Script in action

正如我们在上面的剪辑中看到的那样,外层循环完成其当前迭​​代 (# stuff) 直到最后。

关于linux - 停止无限循环并在循环结束时中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54556497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com