GNU/Linux >> Tutoriales Linux >  >> Linux

Tput:¿No hay valor para $término y no se especifica?

Estoy tratando de ejecutar un script bash que tengo a través de cron y recibo el siguiente error al comienzo de la ejecución:

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

Esto es lo que hay en mi 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]

Respuesta aceptada:

Su script de prueba de unidad probablemente llame a tput para generar una salida bonita que muestre qué pruebas pasan y fallan. Bajo cron no hay terminal y por lo tanto no hay tipo de terminal ($TERM ), entonces tput no puede controlar la terminal inexistente.

Su secuencia de comandos de prueba de unidad debe tener 2 modos:

  • ejecutándose en una terminal:puede llamar a tput para generar resultados atractivos
  • no se ejecuta en una terminal:no debería llamar a tput y, en su lugar, genere un formato de salida genérico de solo texto que sea adecuado para canalizar en un correo electrónico como lo está haciendo aquí.

La forma más fácil para que las pruebas unitarias sepan si se están ejecutando o no en un terminal es probar el archivo stdio descritors que se refiere a un terminal. Si es un script de shell, entonces:

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

Básicamente:no llame a tput a menos que esté ejecutando en una terminal, y así evitará el error que está recibiendo, además de producir una salida razonable en cualquier modo en el que esté ejecutando.


Linux
  1. Bash For Loop Guía y ejemplos

  2. ¿Cómo y dónde se interpreta $term?

  3. Ejemplos de ciclos for y while de Bash

  4. 9 Ejemplos de tput de UNIX / Linux:controle el color y el cursor de su terminal

  5. tput:ningún valor para $TERM y ningún error especificado -T registrado por el proceso CRON

Accesos directos para navegar por el historial de la terminal

¿Por qué necesitamos estar rooteados en la terminal para apagar y reiniciar?

¿Herramienta Gui para ver y administrar la cola de impresión?

Interfaz de cinta para GTK y Qt

os.MkDir y os.MkDirAll valor de permiso?

Hardware de terminal de texto (para Linux)