我想在以下脚本中记录进入 stderr
的所有内容:
#!/bin/bash
exec 2> >(tee -a file >&2)
trap '>&2 echo text; exit' INT
read
按 ctrl+c 会触发陷阱,但输出丢失。令人惊讶的是,使用
exec 2>> file
,它最终会出现在文件中,但我也需要将它显示给用户。如何记录
stderr
,包括陷阱输出,同时仍将其显示给用户? 最佳答案
为了让 tee
忽略中断信号,可以在它之前添加一个额外的 trap '' INT
:
#!/bin/bash
exec 2> >(trap '' INT; tee -a file >&2)
trap '>&2 echo text; exit' INT
read
编辑: 在子shell 中包含了@John1024 在评论中提出的陷阱。
关于bash - 如何从陷阱中开球?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54836912/