GNU/Linux >> Linux Esercitazione >  >> Linux

Tput:nessun valore per $term e nessun -t specificato?

Sto cercando di eseguire uno script bash che ho tramite cron e ricevo il seguente errore all'inizio dell'esecuzione:

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

Ecco cosa c'è nel mio 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]

Risposta accettata:

Il tuo script di unit test probabilmente chiama tput per generare un output carino che mostra quali test passano e falliscono. Sotto cron non esiste un terminale e quindi nessun tipo di terminale ($TERM ), quindi tput non può controllare il terminale inesistente.

Il tuo script di unit test deve avere 2 modalità:

  • in esecuzione su un terminale:può chiamare tput per generare un output di bell'aspetto
  • non è in esecuzione su un terminale:non dovrebbe chiamare tput e genera invece un formato di output di solo testo generico che è adatto per il piping in un'e-mail come stai facendo qui.

Il modo più semplice per gli unit test di sapere se sono in esecuzione o meno su un terminale è testare i descrittori di file stdio che fanno riferimento a un terminale. Se è uno script di shell, allora:

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

Fondamentalmente:non chiamare tput a meno che tu non stia funzionando su un terminale, e così eviterai l'errore che stai ricevendo, oltre a produrre un output ragionevole in qualsiasi modalità in cui ti trovi.


Linux
  1. Installa e usa Guake:un emulatore di terminale a discesa per Debian 10

  2. Come e dove viene interpretato il termine $?

  3. Bash Shell Script:verifica la presenza di un flag e acquisisci il suo valore

  4. tput:nessun valore per $TERM e nessun errore -T specificato registrato dal processo CRON

  5. Colore diverso per comando e output

Scorciatoie per la navigazione nella cronologia del terminale

Perché dobbiamo essere root nel terminale per l'arresto e il riavvio?

Strumento Gui per la visualizzazione e la gestione della coda di stampa?

Interfaccia a nastro per GTK e Qt

Valore di autorizzazione os.MkDir e os.MkDirAll?

Hardware del terminale di testo (per Linux)