tput: Nenhum valor para $ TERM e nenhum -T especificado

2

Estou tentando executar um script bash que possuo por meio do cron e estou recebendo o seguinte erro no início da execução:

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

Aqui está o que está no meu crontab:

0 8 * * 1-5 cd /var/www/inv/ && /var/www/inv/unitTest run all 2>&1| mail -r "[email protected]" -s "Daily Inventory Unit Test Results" [email protected]
    
por ComputerLocus 11.06.2015 / 14:42

1 resposta

4

Seu script de teste de unidade provavelmente chama tput para gerar uma saída considerável, mostrando quais testes são aprovados e reprovados. Sob cron não há terminal e, portanto, nenhum tipo de terminal ( $TERM ), portanto tput não pode controlar o terminal inexistente.

Seu script de teste de unidade precisa ter dois modos:

  • em execução em um terminal: ele pode chamar tput para gerar uma saída bonita
  • não está sendo executado em um terminal: ele não deve chamar tput e, em vez disso, gerar um formato genérico de saída somente de texto que seja adequado para inserir um e-mail como você está fazendo aqui.

A maneira mais fácil de os testes de unidade saberem se estão ou não rodando em um terminal é para testar os descritores de arquivos stdio que se referem a um terminal. Se for um script de shell, então:

if [ -t 1 ]; then
    tput bold; echo pretty; tput sgr0
else
    echo ugly
fi

Basicamente: não chame tput a menos que você esteja rodando em um terminal, e assim você evitará o erro que está recebendo, além de produzir uma saída razoável em qualquer modo em que você esteja rodando.

    
por 11.06.2015 / 14:52

Tags