Я использую в своем скрипте bash команду tput, чтобы раскрасить текст
как
tput setaf 2
при запуске скрипта из putty или консоли все в порядке
, но когда я запускаю какой-то внешний движок приложений WIN, который запускает сценарий через SSH мы получаем следующую ошибку на 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
Пожалуйста, посоветуйте, что нужно установить ( ENV или иначе ) в моем bash скрипте, чтобы использовать команду tput ?
Какое значение нужно установить для $TERM ( в моем скрипте bash ) ?
вызовите оболочку со следующим синтаксисом:
ssh user@127.0.0.1 "TERM=xterm script.sh"
или
ssh user@127.0.0.1 "export TERM=xterm ; script.sh"
Замените следующее:
пользователь своим именем пользователя
127.0.0.1 скриптом удаленного IP
.sh по имени вашего скрипта
МОЕ РАБОЧЕЕ РЕШЕНИЕ ПРОБЛЕМЫ 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}
...
Таким образом, не имеет значения интерактивная или неинтерактивная оболочка - tput по-прежнему работает нормально.