当我在 Linux 机器上运行 bash 脚本时,日志中出现以下错误,
注意-我们在脚本中设置:
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 并通过 ssh 在远程机器上运行命令时
为了避免这种情况,我们在 bash 脚本中设置 TERM=xterm ,如下所示:
ssh user@$remote_machine "TERM=xterm /tmp/script.sh"
但这不是一个优雅的解决方案,因为我的脚本使用了很多 ssh 和 curl 命令,所以在每个 SSH 或 curl 等上设置它不是一个实用的解决方案
所以我最大的问题是
如何过滤信息 –tput:没有 $TERM 的值并且没有指定 -T?
以便我们不会在我的$日志文件
答案1
在传递到日志之前,您尝试过滤一下怎么样?也许像这样?
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