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

问题描述 投票:1回答:1

我想将标准错误和标准输出传递给用户定义的函数来编写自定义日志

    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  

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

bash unix
1个回答
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
}    
© www.soinside.com 2019 - 2024. All rights reserved.