GNU/Linux >> Znalost Linux >  >> Linux

Tput:Žádná hodnota pro $term a není specifikováno -t?

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 tput vytvářet pěkně vypadající výstup
  • neběží na terminálu:nemělo by volat tput a 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.


Linux
  1. Bash pro průvodce smyčkou a příklady

  2. Nainstalujte a používejte Guake – rozevírací terminálový emulátor pro Debian 10

  3. Jak a kde je $term interpretován?

  1. 9 UNIX / Linux tput Příklady:Ovládání barvy a kurzoru terminálu

  2. Bash Shell Script - Zkontrolujte, zda nemáte příznak a zjistěte jeho hodnotu

  3. tput:Žádná hodnota pro $TERM a žádná -T specifikovaná chyba zaznamenaná procesem CRON

  1. Jsou terminálové barevné únikové sekvence definovány kdekoli pro Bash?

  2. Příklady Bash for Loop a While Loop

  3. Kód pro malloc a zdarma