6

一部のソース コードで次の bash コマンドを見つけました。

exec 3>&1 > >(logger -t "OKOK")

正確にはどういう意味ですか?

私の知る限り、これらのログは syslog にリダイレクトされます。

しかし、何3>&1ですか?

これまでに 3 のファイル記述子を見たことがありません。

4

2 に答える 2

5

確かに珍しいですが、存在します:

開いている各ファイルには、ファイル記述子が割り当てられます。stdin、stdout、および stderr のファイル記述子は、それぞれ 0、1、および 2 です。追加のファイルを開くために、記述子 3 から 9 が残ります。これらの追加のファイル記述子の 1 つを一時的な重複リンクとして stdin、stdout、または stderr に割り当てると便利な場合があります。これにより、複雑なリダイレクトと再シャッフル後の通常への復元が簡素化されます

詳細については、IO リダイレクト ページをご覧ください。

于 2012-08-30T10:21:32.193 に答える
0

この行以降、STDOUT に出力されるものはすべて によって処理されloggerます。元の STDOUT は fd3 に保存されているため、後で (必要に応じて) 通常の STDOUT を復元できます。詳細については、高度な BASH スクリプト ガイドを参照してください。

于 2012-08-30T10:39:58.160 に答える