1

когда я запускаю скрипт bash на моей машине с Linux, в моем журнале появляются следующие ошибки:

примечание - мы устанавливаем в сценарии:

exec > $log 2>&1 ,  (  in order to send all standard error/output to $log ) 

сообщения об ошибках:

tput: No value for $TERM and no -T specified

чтобы отфильтровать сообщения об ошибках, мы пытаемся установить в bash-скрипте, что:

export TERM=xterm

но без помощи

после копания мы обнаружили, что это произошло в некоторых случаях, например, когда мы выполняем ssh на удаленной машине и запускаем команды на удаленной машине VIA ssh

во избежание этого мы устанавливаем TERM = xterm в скрипте bash следующим образом:

ssh user@$remote_machine "TERM=xterm  /tmp/script.sh"

но это очень не элегантное решение, и поскольку в моем скрипте используется много команд ssh и curl, установить его на каждом SSH или curl и т. д. не практично

так что мой большой вопрос

как отфильтровать сообщение - tput: нет значения для $ TERM и не указан -T ?

поэтому мы не получаем эти уродливые сообщения в моем файле журнала $

1 ответ1

0

Как насчет того, чтобы попытаться отфильтровать его перед переходом в журнал? Как это может быть?

exec 2>&1 | egrep -v "tput: No value for $TERM and no -T specified" > $log

После размышления, это не работает с exec. Может быть, лучше определить это вне скрипта, т.е. с помощью скрипта-обёртки.

Посмотрите, работает ли это:

Закомментируйте выражение exec и log из вашего скрипта, как это

#exec > $log 2>&1 

и выполнить скрипт с

/path/to/script.sh 2>&1 | egrep -v "tput: No value for $TERM and no -T specified" > /path/to/log

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .