ksh中的自定义陷阱信号

时间:2010-12-16 22:04:30

标签: signals ksh shell-trap

我有办法在ksh中实现自定义假信号吗?目前正在捕获ERR信号并退出。但是,由于更改,有些调用可能无法返回成功,但这是一个有效的条件。在这种情况下,我想确保此调用生成不同的信号或以不同方式处理ERR。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以使用kill将您想要的任何信号发送到当前shell。您可以在子shell中使用exit或在函数中使用return来设置所需的任何错误代码。

试试这个脚本:

#!/bin/ksh
trap 'echo USR1 signal processed' USR1
trap 'echo ERR signal processed' ERR
[[ $1 == a ]] && kill -s USR1 $$ || (exit 1)
echo "done"

示例:

$ ./testsignal
ERR signal processed
done
$ ./testsignal a
USR1 signal processed
done

答案 1 :(得分:0)

也许你可以简单地将你想要处理退出代码的语句包装成一个只需要你想要的结构(使用“或”或“if not”结构并分析退出代码)。

这似乎是一种更清晰的编程风格,不是吗?