我刚刚编写了一个简单的记录器,它将一 strip 有时间的消息附加到一个文件中。现在我还想将错误添加到该日志文件中,以便更好地理解出了什么问题。这是我当前的代码:
#!/bin/bash
logprint() {
echo "$(date +%T): $*" >> ./logfile
}
logdate() {
DATE=`date "+%d.%m.%Y"`
echo "-------------------- ${DATE} --------------------" >> ./logfile
}
日志打印函数接受参数并将日期和消息简单地写入日志文件。日志日期函数只是将日期写在开头。
现在我想把错误输出给日志打印函数。最好的方法是什么?
最佳答案
您可以为此使用 >>(cmd)
形式的进程替换技术。这允许您将标准错误流的输出重定向到函数。你可以做类似的事情
2> >(logprint)
但是您不能像从位置参数中读取一样从这个过程替换的输出中读取,您需要像通过标准输入读取一样读取。您可以将您的功能调整为如下所示。添加了用于演示目的的脚本
#!/usr/bin/env bash
logprint() {
args=""
if (( "$#" > 0 )); then
args="$*"
else
while IFS= read -r line; do
args+="$line"
done
fi
echo "$(date +%T): $args" >> ./logfile
}
logprint "foobar"
mv foobar nosuchfile 2> >(logprint)
关于linux - 将标准错误流输出传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56018008/