GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Tput:Kein Wert für $term und kein -t angegeben?

Ich versuche, ein Bash-Skript auszuführen, das ich über Cron habe, und erhalte zu Beginn der Ausführung die folgende Fehlermeldung:

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

Folgendes steht in meiner 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]

Akzeptierte Antwort:

Ihr Unit-Test-Skript ruft wahrscheinlich tput auf um eine hübsche Ausgabe zu erzeugen, die zeigt, welche Tests bestanden und fehlgeschlagen sind. Unter cron es gibt kein Terminal und somit auch keinen Terminaltyp ($TERM ), also tput kann das nicht vorhandene Terminal nicht steuern.

Ihr Unit-Test-Skript muss zwei Modi haben:

  • läuft auf einem Terminal:Es kann tput aufrufen um hübsch aussehende Ausgaben zu erzeugen
  • läuft nicht auf einem Terminal:Es sollte tput nicht aufrufen und generieren Sie stattdessen ein generisches Nur-Text-Ausgabeformat, das zum Weiterleiten in eine E-Mail geeignet ist, wie Sie es hier tun.

Der einfachste Weg für die Unit-Tests festzustellen, ob sie auf einem Terminal ausgeführt werden oder nicht, besteht darin, die Deskriptoren der stdio-Datei zu testen, die sich auf ein Terminal beziehen. Wenn es sich um ein Shell-Skript handelt, dann:

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

Grundsätzlich gilt:tput nicht aufrufen es sei denn, Sie arbeiten auf einem Terminal, und Sie vermeiden so den Fehler, den Sie erhalten, und erzeugen eine vernünftige Ausgabe in dem Modus, in dem Sie gerade laufen.


Linux
  1. Bash For Loop Guide und Beispiele

  2. Installieren und verwenden Sie Guake – Ein Dropdown-Terminal-Emulator für Debian 10

  3. Wie und wo wird $term interpretiert?

  4. 9 UNIX / Linux Eingabebeispiele:Steuern Sie die Farbe und den Cursor Ihres Terminals

  5. Code für Malloc und kostenlos

Verknüpfungen zum Navigieren im Terminalverlauf

Warum müssen wir zum Herunterfahren und Neustarten im Terminal root sein?

Gui-Tool zum Anzeigen und Verwalten der Druckwarteschlange?

Ribbon-Schnittstelle für GTK und Qt

os.MkDir und os.MkDirAll Berechtigungswert?

Textterminal-Hardware (für Linux)