linux + tput:$TERM 没有值且未指定 -T

linux + tput:$TERM 没有值且未指定 -T

我在 bash 脚本中使用 tput 命令来给文本上色

作为

tput setaf 2

当我从 putty 或控制台运行脚本时,一切正常

但是当我运行一些通过 SSH 运行脚本的外部 WIN 应用程序引擎时,我们在 tput 上收到以下错误

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

请建议为了使用 tput 命令需要在 bash 脚本中设置什么(ENV 或其他)?

需要为 $TERM 设置什么值(在我的 bash 脚本中)?

答案1

使用以下语法调用你的 shell:

ssh [email protected] "TERM=xterm script.sh"

或者

ssh [email protected] "export TERM=xterm ; script.sh"

替换以下内容:

用户通过您的用户名

127.0.0.1通过您的远程 IP

脚本通过脚本名称

答案2

我对 TPUT 问题的解决方案:

# when $TERM is empty (non-interactive shell), then expand tput with '-T xterm-256color'
[[ ${TERM}=="" ]] && TPUTTERM='-T xterm-256color' \
                  || TPUTTERM=''

declare -r    RES='tput${TPUTTERM} sgr0'       REV='tput${TPUTTERM} rev'
declare -r    fRD='tput${TPUTTERM} setaf 1'    bRD='tput${TPUTTERM} setab 1'
declare -r    fGN='tput${TPUTTERM} setaf 2'    bGN='tput${TPUTTERM} setab 2'
...
echo ${fRD}" RED Message: ${REV} This message is RED REVERSE. "${RES}
echo ${fGN}" GREEN Message: ${REV} This message is GREEN REVERSE. "${RES}
...

这样,无论存在交互式还是非交互式 shell,tput 仍然可以正常工作。

相关内容