0

(まず、1時間探していたので、これが繰り返されていないと確信しています)

1 つのコマンドを 1 回実行し、次のことを行うスクリプトを作成する必要があります。

  1. stdout と stderr の両方をファイルに保存します (適切な順序を維持しながら)
  2. stderr のみを変数に保存します。

そのようなファイルがある場合、ポイント1の詳細

echo "one"
thisisanerrror
echo "two"
thisisanotherError

出力、エラー、出力、エラーの順に表示されることを期待する必要があります (したがって、連結では不十分です)。

私が最も近いものは次のとおりです。ログファイルが破損しているようです。

errs=`((./someCommand.sh 2>&1 1>&3) | tee /dev/stderr ) 3>file.log 2>&3 `
4

1 に答える 1

1

これは出発点かもしれません:

パイプで「tee」を使用しているときにstderrをファイルに書き込むにはどうすればよいですか?

編集:

これはうまくいくようです:

((./foo.sh) 2> >(tee >(cat) >&2)) > foo.log

stderr を tee で分割し、1 つのコピーを stdout (cat) に書き込み、もう 1 つを stderr に書き込みます。その後、すべての stdout を取得してファイルに書き込むことができます。

編集:出力を変数に保存する

varx=`((./foo.sh) 2> >(tee >(cat) >&2))`

コマンドが追加の二重引用符で囲まれているのも見ましたが、それが何に役立つのかわかりません。

于 2012-09-11T00:35:19.420 に答える