我想将标准错误和标准输出传递给userdefined函数来编写自定义日志
OutputLogFile="OutputLogFilepath"
ErrorLogFile="ErrorLogfilePath"
//user defined function
OutputLog()
{
echo $(DateTimeForLog)-$ScriptName-”information”-$1 >> $StdOutPutlogFile
}
errorLog()
{
echo $(DateTimeForLog)-$ScriptName-”error”-$1 >> $StdErrorLogFile
}
//commands
{
ls -la
cd /tmp/kjhdakdha
ls -la
} 2 | errorLog 1 | OutputLog
我想捕获自定义日志而不是直接错误和输出。但上面的代码不起作用。
答案 0 :(得分:0)
块结尾处的重定向在语法上是不正确的。我不会厌倦你剩下的(不完整的)脚本,这是最后一行:
} 2> >(errorLog 1) 1> >(OutputLog)
您省略了重定向符号>
,您应该在process substitution上阅读。
1
前面的>
通常会被省略,但在此使用它有助于提高可读性。我不确定1
调用之后的errorLog
是否意图执行此操作或是函数的参数,因此如果不需要则省略它。
正如@Veda提醒我的那样,我应该提到你的函数不会重定向实际的输出或错误信息。这是一个例子:
OutputLog()
{
while IFS='' read -r
do
echo "$(DateTimeForLog)-$ScriptName-information- $REPLY" >> "$StdOutPutlogFile"
done
}