linux + tput: Нет значения для $TERM и нет -T specified

Я использую в своем скрипте 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 ) ?

0
задан 11 January 2018 в 14:53
2 ответа

вызовите оболочку со следующим синтаксисом:

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 по имени вашего скрипта

0
ответ дан 5 December 2019 в 06:50

МОЕ РАБОЧЕЕ РЕШЕНИЕ ПРОБЛЕМЫ 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 по-прежнему работает нормально.

0
ответ дан 3 June 2021 в 23:39

Теги

Похожие вопросы