LINUX.ORG.RU
ФорумAdmin

Как поместить в лог отфильтрованный stdout?

 ,


0

2

Привет гуру линукса.

Прошу совета, как в bash скрипте использовать собственный лог, который является отфильтрованным выводом скрипта?

Т.е. у меня есть переменная $LOG, и я хочу в неё записывать определенные события в ходе выполнения скрипта.

Реализацию хочу сделать по такой схеме, сначала полный вывод скрипта перенаправляется во временную переменную, в ней текст фильтруется и уже перенаправляется в лог.

По учебнику это вроде делается так:

exec &>>$TEMP | grep «text»>>$LOG

Но не могу довести до ума, как же её правильно реализовать в скрипте?

Попробуйте так:

#[[ ! -t 0 ]] && {
    coproc LOGGING {
        exec grep ... >> $LOG_FILE
    }
    exec  >&"${LOGGING[1]}"
    exec 2>&"${LOGGING[1]}"
#}

Закомментированные строки - это проверка на запуск вручную: если stdin (поток номер 0) не связан с терминальным устройством, логгируем в файл, иначе - стандартным образом, в stdout/stderr.

spirit ★★★★★ ()