さて、このようなスクリプトがあるとしましょう。
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への出力順序が混乱する可能性があります。)