Signals 自定义陷阱信号(单位:ksh)

Signals 自定义陷阱信号(单位:ksh),signals,ksh,shell-trap,Signals,Ksh,Shell Trap,我有没有办法在ksh中实现自定义假信号?目前,我正在捕获错误信号并退出。但是,由于更改,有些调用可能不会返回成功,但这是一个有效条件。在这种情况下,我希望确保此调用生成不同的信号或以不同的方式处理错误。有什么方法可以做到这一点吗?也许你可以简单地将那些你想特别处理其退出代码的语句包装在一个只做你想做的事情的结构中(使用“or”或“if not”结构并分析退出代码) 这似乎是一种更简洁的编程风格,不是吗?您可以使用kill向当前shell发送任何想要的信号。您可以在子shell中使用exit,或在

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

也许你可以简单地将那些你想特别处理其退出代码的语句包装在一个只做你想做的事情的结构中(使用“or”或“if not”结构并分析退出代码)


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

您可以使用
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

)这就是我现在正在做的!想要进一步清理,根据我所拥有的,将信号捕获到一些函数中似乎是最干净的方法嗯,嗨,丹尼斯,有趣的是,这不起作用。我只看到上面的回声,没有看到USR1被捕获。在上述情况下,即使出错也不会被发现。但是,当我添加以下chmod 777/时,我没有权限,它打印了“ERR signal processed”