多个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命令。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Bootstrap入门总结之如何下载与使用
- AngularJS:未知提供者:$idleProvider
- virtualbox – EFI Shell中没有FS0
- twitter-bootstrap – 改变Twitter bootstrap Nav-Pills的颜
- angularjs – localStorage vs sessionStorage和cookie
- angular – 如何在Ionic 2/3中编写自定义组件而不会丢失准备
- VIM 代码片段插件 ultisnips 使用教程
- 使vim显示git diff与颜色类似git diff命令(红色删除,绿色添
- 在vim中的注释下面插入一个新行?
- scala – 在Yarn集群上提交Spark作业