ティー

ティー

さて、このようなスクリプトがあるとしましょう。

log_files=(output_{console,stdout,stderr}.log)
do_stuff 2>"${log_files[2]}" 1>"${log_files[1]}"

"${log_files[1]}"この関数はstdoutをstderrにリダイレクトする必要がありますが、stdoutとstderrの"${log_files[2]}"両方をリダイレクトしたいと思います。"${log_files[0]}"これはどのように達成できますか?

ベストアンサー1

これはzshではるかに簡単です。multios同じfdに複数のリダイレクトがある場合、シェルは内部魔法を実行して出力をすべてのターゲットに送信します。たとえば、次のようになります。

% do_stuff > stdout.log 2> stderr.log &> both.log

(冗長出力を処理する中間プロセスによって、stdoutとstderrへの出力順序が混乱する可能性があります。)

おすすめ記事