1

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

4

2 回答 2

2

您可以使用kill将任何您想要的信号发送到当前 shell。您可以exit在子shell 或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
于 2010-12-17T01:02:19.207 回答
0

也许您可以简单地将要特别处理其退出代码的语句包装在一个结构中,该结构将简单地执行您想要的操作(使用“或”或“如果不是”结构并分析退出代码)。

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

于 2010-12-16T22:13:51.937 回答