检查陷阱是否设置在Bash中

有没有办法检查在Bash中设置了哪些trap (在当前会话或脚本中)?

理想情况下,我希望能够获得分配给它们的trap信号列表,但如果这是不可能的,我可以单独检查每个信号。

是的

你可以看到所有的陷阱,或陷阱的特定信号:

 $ trap # show all traps for all signals $ trap -p SIGINT # only show traps for SIGINT $ trap -p EXIT # only show traps for EXIT 

我们来定义一个函数,如下所示:

 $ function f > { > echo trapped > } 

让我们设置陷阱到分配给SIGINT的那个函数

 $ trap f SIGINT 

让我们列出设置陷阱:

 $ trap trap -- 'f' SIGINT trap -- '' SIGTSTP trap -- '' SIGTTIN trap -- '' SIGTTOU