Я хочу передать стандартную ошибку и стандартный вывод пользовательской функции для записи пользовательских журналов.

    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
Suganya 2 Янв 2018 в 12:46

1 ответ

Лучший ответ

Перенаправление в конце блока синтаксически неверно. Не буду утомлять вас остальной частью вашего (неполного) скрипта, вот последняя строчка:

} 2> >(errorLog 1) 1> >(OutputLog)

Вы пропустили символ перенаправления >, и вам следует прочитать подмена процесса.

1 перед > обычно опускается, но используется здесь для облегчения чтения. Я не уверен, должен ли 1 после вызова errorLog делать это или является параметром функции, поэтому опустите его, если он не требуется.

Как напомнил мне @Veda, я должен был упомянуть, что ваши функции не перенаправляют фактический вывод или сообщение об ошибке. Вот пример:

OutputLog()
{  
  while IFS='' read -r
  do
    echo "$(DateTimeForLog)-$ScriptName-information- $REPLY" >> "$StdOutPutlogFile"
  done
}    
0
cdarke 2 Янв 2018 в 11:49