有什么方法可以确定从 bash 陷阱函数内部捕获的信号吗?

有什么方法可以确定从 bash 陷阱函数内部捕获的信号吗?

我有一个bash脚本,在其中我指定了trap将为任何 (catchable) 调用一个函数signal

typeset -i sig=1
while (( sig < 65 )); do
    trap myfunc $sig
    let sig=sig+1
done

我的脚本有什么方法可以确定哪个signal已被捕获?

答案1

trap "signum=${sig};myfunc" "$sig"

答案2

我假设您正在尝试将捕获到的信号值传递给您想要采取的操作。尝试这样的事情:

# 1     SIGHUP
# 2     SIGINT
# 3     SIGQUIT
# 6     SIGABRT
# 9     SIGKILL
# 14    SIGALRM
# 15    SIGTERM

for sig in 1 2 3 6 9 14 15; do
    trap 'echo "caught signal '$sig'..."' $sig
done

相关内容