我在 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 仍然可以正常工作。