如何通过键盘输入退出 bash 循环?

如何通过键盘输入退出 bash 循环?

我有一个bash lopp作为

#!/bin/bash
for (( c=0; c<=1000000; c++ ))
do  
SOME STUFF HERE
done

我通过键盘输入中断长循环,Ctrl+CCtrl+C只是终止脚本。我正在寻找一种替代方案来继续当前循环并STUFF在当前循环中完成运行后打破循环。

答案1

一种方法是使用trapControl-C 信号并break退出loop,如下所示:

#!/bin/bash
trap break INT
for (( c=0; c<=1000000; c++ ))
do  
SOME STUFF HERE
done
echo "I have broken out of the interminably long for loop"
trap - INT
sleep 1
echo "END."

有关其工作原理的更多详细信息,关键是:

trap break INT

并且

trap - INT

我们使用“break”告诉陷阱,当INT(中断,又名SIGINT)信号生成时(按 Ctrl+C 时发生),我们要运行break来中断循环。

我们可以将任意 shell 命令放在引号中,而不是“break”,并且当生成给定信号(在我们的例子中为 INT)时将执行该命令。

最后,我们再次运行 trap 将-“INT”处理程序恢复为默认操作。

以下是一些可供进一步阅读的资源和示例:

相关内容