加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

多个bash陷阱为同一信号

发布时间:2020-12-15 09:09:14 所属栏目:安全 来源:网络整理
导读:当我在bash中使用“trap”命令时,给定信号的上一个陷阱被替换。 有没有办法使同一个信号的多个陷阱火? 编辑: 看来我误解了这个问题。答案很简单: handler1 () { do_something; }handler2 () { do_something_else; }handler3 () { handler1; handler2; }t
当我在bash中使用“trap”命令时,给定信号的上一个陷阱被替换。

有没有办法使同一个信号的多个陷阱火?

编辑:

看来我误解了这个问题。答案很简单:

handler1 () { do_something; }
handler2 () { do_something_else; }
handler3 () { handler1; handler2; }

trap handler3 SIGNAL1 SIGNAL2 ...

原版的:

只需在命令结尾列出多个信号:

trap function-name SIGNAL1 SIGNAL2 SIGNAL3 ...

您可以使用trap -p找到与特定信号相关的函数:

trap -p SIGINT

注意,它单独列出每个信号,即使它们由相同的功能处理。

您可以通过执行以下操作添加一个已知的附加信号:

eval "$(trap -p SIGUSR1) SIGUSR2"

即使存在由相同功能处理的其它附加信号,这也工作。换句话说,让我们假设一个函数已经处理了三个信号 – 你可以通过引用一个现有的函数再添加两个函数(在结束引号内只显示一个)。

如果你使用Bash> = 3.2,你可以这样做来提取给定信号的函数。注意,它不完全健壮,因为可能会出现其他单引号。

[[ $(trap -p SIGUSR1) =~ trap -- '([^47])'.* ]]
function_name=${BASH_REMATCH[1]}

然后,如果您需要使用函数名称等,则可以从头开始重新构建trap命令。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读