bash – 自动将所有stderr和stdout捕获到文件中,并仍然显示在控
发布时间:2020-12-15 21:15:04 所属栏目:安全 来源:网络整理
导读:我正在寻找一种方法来捕获文件的所有标准输出和标准错误,同时也将其输出到控制台.所以: (set it up here)set -x # I want to capture every line that's executed toocat 'foo'echo 'bar' 现在,foo和bar的输出以及set -x的调试输出将被记录到某个日志文件中
我正在寻找一种方法来捕获文件的所有标准输出和标准错误,同时也将其输出到控制台.所以:
(set it up here) set -x # I want to capture every line that's executed too cat 'foo' echo 'bar' 现在,foo和bar的输出以及set -x的调试输出将被记录到某个日志文件中并显示在控制台上. 我无法控制文件的调用方式,因此需要在文件的开头设置. 解决方法
您可以使用exec和进程替换将脚本中的stdout和stderr发送到tee.进程替换是一种基础,因此它不可移植,如果将bash称为/ bin / sh或使用–posix,则无法工作.
exec > >(tee foo.log) 2>&1 set -x # I want to capture every line that's executed too cat 'foo' echo 'bar' sleep 2 睡眠被添加到最后,因为控制台的输出将由发球台缓冲.睡眠将有助于防止提示在输出完成之前返回. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |