Bash   发布时间:2022-05-13  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了将bash stderr发送到logfile,但仅在存在错误时才发送大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用以下代码将stderr发送到文件.

.script >2 "errorlog.$(date)"

问题是每次运行脚本时都会创建一个空白日志文件,即使错误不存在也是如此.我也在网上和几本书中看过,并且只有在存在错误时才能弄清楚如何创建日志文件.

解决方法

输出重定向在脚本运行之前打开文件,因此无法判断文件是否将接收任何输出.但是,如果文件结束为空,则可以立即删除该文件:

logfile="errorlog.$(date)"
# Note your typo; it's 2>,not >2
script 2> "$logfile"; [ -s "$logfile" ] || rm -f "$logfile"

我使用-f以防万一,因为如果$logfile不存在,-s可能会失败,而不仅仅是它是空的.我用 ;分离命令,因为$logfile是否包含任何内容不依赖于脚本是否成功.

您可以将其包装在一个函数中,以便于使用.

save_log () {
    logfile=${1:-errorlog.$(date)}
    cat - > "$logfile"
    [ -s "$logfile" ] || rm -f "$logfile"
}

script 2> >( save_log )
script 2> >( save_log my_logfile.txt )

不像重定向到文件那么简单,并且取决于非标准功能(进程替换),但也不是太糟糕.

大佬总结

以上是大佬教程为你收集整理的将bash stderr发送到logfile,但仅在存在错误时才发送全部内容,希望文章能够帮你解决将bash stderr发送到logfile,但仅在存在错误时才发送所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: