想在shell脚本中编写自定义的错误和输出函数

时间:2018-01-02 09:46:40

标签: bash unix

我想将标准错误和标准输出传递给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  

我想捕获自定义日志而不是直接错误和输出。但上面的代码不起作用。

1 个答案:

答案 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
}