GNU/Linux >> Linux の 問題 >  >> Linux

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]

承認された回答:

ユニットテストスクリプトはおそらくtputを呼び出します どのテストが成功し、失敗するかを示すきれいな出力を生成するため。 cronの下 端末がないため、端末タイプ($TERM)はありません )、したがってtput 存在しない端末を制御することはできません。

ユニットテストスクリプトには2つのモードが必要です:

  • 端末で実行:tputを呼び出すことができます 見栄えの良い出力を生成するには
  • 端末で実行されていない:tputを呼び出さないでください 代わりに、ここで行っているように電子メールにパイプするのに適した一般的なテキストのみの出力形式を生成します。

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

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

基本的に:tputを呼び出さないでください ターミナルで実行している場合を除いて、発生しているエラーを回避し、実行しているモードに関係なく適切な出力を生成します。


Linux
  1. BashForループガイドと例

  2. Guakeのインストールと使用–Debian10用のドロップダウンターミナルエミュレータ

  3. Bash の For ループと While ループの例

  1. $ termはどこでどのように解釈されますか?

  2. 再起動時に端末を保存して復元する

  3. cp -r と cp -R (コピーコマンド) の違い

  1. ターミナルカラーエスケープシーケンスはBashのどこでも定義されていますか?

  2. 9 UNIX / Linux tput の例:端末の色とカーソルを制御する

  3. malloc と free のコード