Запись лог-файла с помощью tee

Вот моя проблема, я работаю со скриптом ksh и пытаюсь сделать файл журнала с функцией tee и с:

  • информация, которая будет отображаться на экране

  • информацию, которая не будет отображаться на экране.

Поэтому я использовал tee для обработки всех echo в моем скрипте, и я хотел перенаправить вывод из определенного эха, чтобы он попадал только в файл журнала.

foo(){
        echo Hello               # screen + log file
        echo World >> "tee.txt"  # only log file
        echo !                   # screen + log file      
}             
rm -f "tee.txt"
foo | tee -a "tee.txt" 

Экран вывод

Hello
!

Это нормально.

Журнальный файл

Но в файле журнала:

World
Hello
!

echo перенаправление написано до tee.

Вывод

Итак, есть ли что-то похожее на эхо, которое будет только сохранять вывод и не показывать его на экране? Чтобы получить этот вывод в файле журнала с помощью tee?

Hello
World
!

person Adhin37    schedule 28.07.2016    source источник


Ответы (1)


Попробуй это. У меня сработало на кш.

rm -f "tee.txt"

foo()
{
    echo Hello
    stty -echo
    echo World >> "tee.txt"
    stty echo
    echo !
}
foo | tee -a "tee.txt" 
person Saurabh Sharma    schedule 29.07.2016