Я хочу зафиксировать вывод выполнения сценария оболочки в режиме реального времени, чтобы обогатить его информацией, указывающей дату и время.
Для иллюстрации у меня есть, например, сценарий такого типа, который я не должен изменять:
#!/бин/баш
для я в 2 3 1
делать
echo "Ожидание $i секунд..."
спать $ я
сделано
Скрипт выдает следующий вывод:
Ждем 2 секунды...
Ждем 3 секунды...
Ожидание 1 секунды...
Я пытаюсь произвести вывод типа:
2021-06-16 11:44:48 [ИНФО] Ожидание 2 секунды...
2021-06-16 11:44:50 [INFO] Ожидание 3 секунды...
2021-06-16 11:44:53 [INFO] Ожидание 1 секунды...
Я использую следующие функции оболочки для форматирования в сценарии, который запускает мой исходный сценарий:
журнал функций {
echo `дата +%Y-%m-%d" "%H:%M:%S`" $@"
если [ "$LOGFILE" != "" ]
тогда
echo `date +%Y-%m-%d" "%H:%M:%S`" $@" >>$LOGFILE
фи
}
функция логин {
журнал "[INFO] $@"
}
Я очень хорошо справляюсь с циклом while при чтении, чтобы зафиксировать вывод моего скрипта, но я получаю все строки одновременно (конец его выполнения), и поэтому все строки имеют одинаковую дату и время. Я пытаюсь получить строки каждый раз, когда скрипт создает строку, а не в конце выполнения.