将脚本变量重定向到日志文件而不会丢失 stderr

Asa*_*gen 4 logs io-redirection

在 bash 脚本中设置“set -x”时,或者如果您使用 运行脚本bash -x,您将获得所有参数与标准输出一起打印到屏幕上。

是否可以将 stderr 和 stdout 打印到屏幕但将set -x输出重定向到日志文件而不将其打印到屏幕?

这个想法是将我可以在日志中获取的所有信息,但只将常规 stdout 和 stderr 打印到屏幕上。

X T*_*ian 5

user1@mac1:~/tmp$ cat t1.sh
exec 4>shell.log
BASH_XTRACEFD=4

set -x
echo abc
cat ffff

user1@mac1:~/tmp$ bash t1.sh
abc
cat: ffff: No such file or directory
user1@mac1:~/tmp$ cat shell.log
+ echo abc
+ cat ffff
user1@mac1:~/tmp$ 
Run Code Online (Sandbox Code Playgroud)