【发布时间】:2015-02-26 14:02:50
【问题描述】:
我创建了一个 bash 陷阱,它捕获 CTRL + C 并调用函数 ctrl_c。这个函数只是显示一条消息并启动一个计数器然后返回到主函数。
陷阱在第一次运行时工作正常,但如果再次尝试,它会显示 C^,尽管它确实禁用了 CTRL + C,但它不会再次调用该函数。
有没有办法将陷阱重置为像第一个实例一样运行。
提前致谢。
代码;
function ctrl_c() {
clear
echo "** Trapped CTRL-C"
echo -n "Press [ Enter ] to continue."
read
for i in $(seq 1 5);
do
let timer="5 - $i + 1"
clear
echo "Returning to main menu in.. $timer"
sleep 1
done
main
}
trap ctrl_c INT
【问题讨论】:
-
请提供您的其余代码/一个最小的工作示例,您的 sn-p 不包含名为
main的函数。 -
main只是一个菜单,用户可以选择选项1、2、3、4。这是第二次运行时调用函数ctrl_c失败的陷阱。
-
你正在从被捕获的 ctrl_c 运行 main,所以你仍然在函数内部,并且当 ctrl_c 已经被捕获时无法捕获它。尽管你可以使用
trap - INT来重置陷阱 -
捕获后如何运行 main ?我尝试在函数 ctrl_c 的末尾使用 trap - INT。