无参数trap为所有陷阱打印当前设置的命令。但是,子shell不继承陷阱,因此bash中保存和恢复陷阱的规范示例失败:
保存陷阱=$(陷阱)
...
eval“$保存陷阱”
赋值的RHS上的陷阱在子shell中运行,因此save_traps始终是空字符串。除了将trap的输出写入临时文件之外,脚本如何找到陷阱的当前命令集?

最佳答案

对我有用。
创建示例陷阱:

$ trap
$ trap echo SIGIO
$ trap
trap -- 'echo' SIGIO

将陷阱存储到save_traps
$ save_traps=$(trap)

删除:
$ trap SIGIO
$ trap | wc -l
   0

恢复:
$ eval "$save_traps"
$ trap
trap -- 'echo' SIGIO

测试对象:
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin12)
Copyright (C) 2007 Free Software Foundation, Inc.

09-26 10:17