14

bashスクリプトでは、

エコー「エラー」1>&2 | ティー-ログ

stderrを画面に出力しますが、ファイルへのログはありません。これらを同時に行うにはどうすればよいですか?

4

4 に答える 4

10

テキストをログ ファイルと stderr の両方にエコーするが、 stdoutにはエコーしない場合は、次のようにします。

echo "error" | tee -a log 1>&2
于 2012-11-13T13:18:39.780 に答える
8
echo "error" 1>&2 | tee -a log

最初の部分1>&2で、あなたが言っているのは、「stdoutをstderrにリダイレクトする」です。したがって、エコーされた出力"error"はstderrに送られます。

Pipe(|)は、からのみ読み取りstdout、。からは読み取りませんstderr。したがって、パイプからはteeまったく取得されません。stdinしたがって、ログファイルには何も追加されません。

于 2012-11-13T10:54:39.750 に答える
7

コンソールで stdout と stderr の両方を表示し、両方のストリームをログに送信するには、以下に示すように stderr を stdout にリダイレクトします。

progam.sh 2>&1 | tee -a log
于 2012-11-13T11:32:12.547 に答える
0

ただし、デフォルトでは stdout のみがパイプで渡されるため、

$ echo "error" | tee 

teeechostderr ではなく、からのスタウトのみが表示されます。stderr は引き続きターミナルに表示されます。

于 2012-11-13T10:46:42.407 に答える