ksh 中的自定义陷阱信号

发布于 2024-10-07 16:15:34 字数 124 浏览 4 评论 0原文

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

Is there a way for me to implement custom fake signals in ksh? Currently am capturing the ERR signal and exiting. However, due to a change, there are calls that may not return success, however that is a valid condition. In such case, I want to make sure that this call generates a different signal or handle the ERR differently. Is there a way to do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

森林散布 2024-10-14 16:15:34

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

You can use kill to send any signal you want to the current shell. You can use exit in a subshell or return in a function to set any error code you want.

Try this script:

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

Example:

$ ./testsignal
ERR signal processed
done
$ ./testsignal a
USR1 signal processed
done
始终不够爱げ你 2024-10-14 16:15:34

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

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

Perhaps you could simply wrap the statements whose exit codes you want to treat specially in a construction that would simply do what you want (employing "or" or "if not" constructions and analyzing the exit codes).

That seems to be a much cleaner programming style, doesn't it?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文