0

スクリプトによる変更をログ ファイルに記録しようとしています。非常に高いレベルで、私のスクリプトには機能があり、その情報をファイルに記録できるようにしたいと考えています。私は「tee -a」を使用しましたが、それは多くの点で機能を台無しにしました。

このタスクを達成する簡単な方法はありますか?

更新:以下のタイプミスを修正

function1(){ ... }
function2(){ ... }
#主要
関数1 | ティー -a /tmp/ログファイル
関数 2 | ティー -a /tmp/ログファイル
4

1 に答える 1

1

(質問の編集を反映するように編集) 関数定義にティーを組み込むことができます。

function() { { ...<original function definition goes here>; } | tee -a output; }

そのため、関数を呼び出すたびに tee を呼び出す必要はありません。明らかに、関数がファイル記述子を変更する場合は、もう少し作業を行う必要があります。また、これによりバッファリングが変更されることに注意してください。function1 内から呼び出されたコマンドに stdout 用の tty がある場合、それらはおそらく出力をライン バッファーしますが、stdout がパイプの場合 (これは にパイプする場合tee)、出力はブロック バッファーされます。これが、表示されている違いの根本的な原因である可能性があります。また、これは 1 つのファイル記述子の出力のみをキャプチャします。おそらく、stderr に書き込むコマンドがあるでしょう。パイプからティーへのパイプがスクリプトの動作を変更する方法について、詳細を提供する必要があります。

于 2013-02-21T17:48:04.953 に答える