下面的陷阱有问题吗?
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)
答案1
当您按下 时,陷阱必须已激活/安装Ctrl+C,否则它(显然)不会触发。该函数也应该在此时定义。这意味着将代码移动到脚本的顶部(开头的某个位置)。
此外,您可能应该定义该函数前安装陷阱,否则如果在两者之间触发陷阱,您将收到“未找到”错误。
例子:
#!/bin/bash
cleanup() { echo 'Exiting script ...'; }
trap cleanup SIGINT
sleep 300