tput: $TERM に値がなく、-T が指定されていません。

tput: $TERM に値がなく、-T が指定されていません。

cronを介してbashスクリプトを実行しようとしていますが、実行の開始時に次のエラーが発生します。

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

これが私の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]

ベストアンサー1

単体テストスクリプトを呼び出して、tputどのテストが合格して失敗したかを示す素晴らしい出力を生成できます。cron端末がないため端末タイプ($TERM)がないのでtput、存在しない端末を制御する方法がありません。

単体テストスクリプトには2つのモードが必要です。

  • 端末で実行:tput良い出力を生成するために呼び出すことができます。
  • 端末で実行しないでください。呼び出すべきではありませんtputが、代わりにここで行ったように電子メールで配信するのに適したプレーンテキスト出力形式を生成します。

単体テストが端末で実行されていることを確認する最も簡単な方法は、端末を参照するstdioファイル記述子をテストすることです。シェルスクリプトの場合は、次のようにします。

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

デフォルトでは、端末で実行されていない限り呼び出さないでくださいtput。これにより、どのモードで実行してもエラーを防ぎ、合理的な出力を生成できます。

おすすめ記事