Snažím se spustit bash skript, který mám přes cron, a na začátku provádění se mi zobrazuje následující chyba:
tput: No value for $TERM and no -T specified
Zde je to, co je v mém 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]
Přijatá odpověď:
 Váš testovací skript jednotky pravděpodobně volá tput za účelem generování pěkného výstupu ukazujícího, které testy projdou a které selžou. Pod cron neexistuje žádný terminál a tedy ani typ terminálu ($TERM ), takže tput nemůže ovládat neexistující terminál.
Váš testovací skript jednotky musí mít 2 režimy:
- běží na terminálu:může volat tputvytvářet pěkně vypadající výstup
- neběží na terminálu:nemělo by volat tputa místo toho vygenerujte obecný pouze textový výstupní formát, který je vhodný pro vložení do e-mailu, jak to děláte zde.
Nejjednodušší způsob, jak testy jednotek zjistit, zda běží nebo neběží na terminálu, je otestovat deskriptory souborů stdio odkazujících na terminál. Pokud je to skript Shell, pak:
if [ -t 1 ]; then
    tput bold; echo pretty; tput sgr0
else
    echo ugly
fi
 V zásadě:nevolejte tput pokud neběžíte na terminálu a vyhnete se tak chybám, které dostáváte, a navíc vytvoříte přiměřený výstup v jakémkoli režimu, ve kterém náhodou běžíte.