我想将stderr
重定向到文件以进行记录:
2>> "$logFile"
如何在每行前加上字符串"error: "
?
另一个选项是sed
:
2> >(sed 's/^/error: /' >> "$logfile")
可能无法仅使用bash内置函数,因为这种为字符串加上前缀的机制需要与流一起使用。
您可以使用流程替换。
2> >(awk '{print "error: " $0}' >> "$logfile")
纯现金版本:
2> >(while read -r line ; do echo "error: $line" ; done >> "$logFile")
。 。 。但是请注意,如果程序写入任何空字节,或者如果程序未在最后一行之后写入换行符,则这将是错误的行为。 (这两个问题都可以解决,但是在某些时候,我们不得不质疑是否值得避免调用awk或sed是否值得。)