pkaramol Asked: 2018-02-03 02:11:57 +0800 CST2018-02-03 02:11:57 +0800 CST 2018-02-03 02:11:57 +0800 CST 陷阱处理程序不起作用? 772 以下陷阱有问题吗? trap cleanup SIGINT cleanup() { echo "Exiting script ..." } echo击中时我从未看到命令Ctrl+c while该片段位于具有一些无限循环的较大脚本的底部。 $ bash --version GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu) bash signals 1 个回答 Voted Best Answer Kusalananda 2018-02-03T02:23:32+08:002018-02-03T02:23:32+08:00 陷阱必须在您按下 时已激活/安装Ctrl+C,否则(显然)不会触发。该功能也应该在那时定义。这意味着将代码移动到脚本的顶部(在开头的某个位置)。 此外,您可能应该在安装陷阱之前定义函数,否则如果在两者之间触发陷阱,您将收到“未找到”错误。 例子: #!/bin/bash cleanup() { echo 'Exiting script ...'; } trap cleanup SIGINT sleep 300
陷阱必须在您按下 时已激活/安装Ctrl+C,否则(显然)不会触发。该功能也应该在那时定义。这意味着将代码移动到脚本的顶部(在开头的某个位置)。
此外,您可能应该在安装陷阱之前定义函数,否则如果在两者之间触发陷阱,您将收到“未找到”错误。
例子: