陷阱处理程序不工作?

陷阱处理程序不工作?

下面的陷阱有问题吗?

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

相关内容