![stdoutを維持しながらstderrをパイプすることは可能ですか? [コピー]](https://linux33.com/image/95799/stdout%E3%82%92%E7%B6%AD%E6%8C%81%E3%81%97%E3%81%AA%E3%81%8C%E3%82%89stderr%E3%82%92%E3%83%91%E3%82%A4%E3%83%97%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
状態情報を標準出力に記録し、デバッグ情報を標準エラーに記録する長期実行プロセスがあります。
logger
stderrで書かれたすべての内容が実際にsyslogに移動しながらプロセスのstdoutを読むことができるように、stderr出力をパイプで接続したいと思います。
これは可能ですか?
答え1
{ cmd 2>&1 >&3 3>&- | logger 3>&-; } 3>&1
アイデアは外のstdoutはファイル記述子(fd)3にコピーされ、stdoutに復元さcmd
れますが、cmdのファイル記述子2(stderr)自体はロガーのパイプに移動します。
これは3>&-
cmdおよびloggerコマンドが必要/使用されないため、その目的を実行した後にfdを閉じることです。