我想用以下脚本记录所有要转到stderr
的内容:
#!/bin/bash
exec 2> >(tee -a file >&2)
trap '>&2 echo text; exit' INT
read
按 ctrl + c 将触发陷阱,但是输出丢失。令人惊讶的是,使用exec 2>> file
,它将最终出现在文件中,但我还需要将其显示给用户。
如何记录stderr
,包括陷阱输出,同时仍向用户显示?
答案 0 :(得分:2)
为了使tee
忽略中断信号,可以在其前面添加一个额外的trap '' INT
:
#!/bin/bash
exec 2> >(trap '' INT; tee -a file >&2)
trap '>&2 echo text; exit' INT
read
编辑:该陷阱包含在子外壳中,由注释中的@ John1024表示。