首先添加一个字符串,然后重定向

问题描述 投票:0回答:2

我想将stderr重定向到文件以进行记录:

2>> "$logFile"

如何在每行前加上字符串"error: "

bash pipe io-redirection
2个回答
2
投票

另一个选项是sed

2> >(sed 's/^/error: /' >> "$logfile")

可能无法仅使用bash内置函数,因为这种为字符串加上前缀的机制需要与流一起使用。


1
投票

您可以使用流程替换。

2> >(awk '{print "error: " $0}' >> "$logfile")

0
投票

纯现金版本:

2> >(while read -r line ; do echo "error: $line" ; done >> "$logFile")

。 。 。但是请注意,如果程序写入任何空字节,或者如果程序未在最后一行之后写入换行符,则这将是错误的行为。 (这两个问题都可以解决,但是在某些时候,我们不得不质疑是否值得避免调用awk或sed是否值得。)

© www.soinside.com 2019 - 2024. All rights reserved.