Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 停止无限循环并在循环结束时中断_Linux_Bash - Fatal编程技术网

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

Linux 停止无限循环并在循环结束时中断,linux,bash,Linux,Bash,我在bash中运行一个无限while循环,它有一个计数元素 while : do #stuff including counting trap break int done 这在很大程度上是我想要的。当我点击Ctrl+C时,循环停止,但脚本继续。但是,循环停止在循环的中间,这意味着最终计数是不准确的。 有没有办法让这个循环在最后中断 不必执行break,您可以设置标志,并在设置标志时在指定位置中断循环。请注意,在回路中,回路头也可以视为回路的最末端 state=run trap

我在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

如果你想在中间使用某处< < /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
),直到最后。

如果这里的一个答案解决了您的问题,请接受该答案。接受答案结束此问题,并奖励接受答案的作者。如果你的问题没有解决,请考虑解释原因。如果其中一个答案解决了你的问题,请接受这个答案。接受答案结束此问题,并奖励接受答案的作者。如果你的问题没有解决,请考虑解释原因。