2011-07-20 7 views
1

私はいくつかのコードを長い間別の部門に渡しています。これは$ MBLの場所にすべてを記録することを目的としていますが、そうではありません。それは、私はそれが標準エラー出力を受け取り、stdoutにそれを送ることを伝えることができます:-(Cryptic Bashコマンド...スクリプトの実行全体を記録することを目的としています

exec > >(tee ${MBL}) 2>&1

$ MBLの場所に空のファイルを作成します。私は、ティーショットを伝えることができなければならないstdoutにと$ MBLへの出力結果を。。しかし、私はexec > >()構文を理解していない

はbash(1)のmanページはフォークが起こることを示唆しているの読み方....

答えて

2

二つのものがここで起こって:のみリダイレクションとexecは、シェルのリダイレクト独自のファイル記述子、および>(command)の構文はbashzshはパイプを作成し、その入力に/dev/fd/*の参照を代入します。

書かれているように、これは主張されているようですが、スクリプトに他のリダイレクトがあるか、>(command)をサポートしていないシェルで実行されている場合、エラーと便利な何もしないでください。

+0

大丈夫です。/dev/fd/* n *が作成されていない(...要求しない)という問題があるようです。何が起こっているか説明しているので、あなたの答えを受け入れる。 –

+0

Linuxの場合、 '/ dev/fd /' - > '/ proc/self/fd /'のシンボリックリンクが必要です。他の環境も変わりますし、そのコンセプトをサポートしていないシステムもあります。 – geekosaur

+0

はい、このLinuxセットアップでprocは空です。それはかなりそこにある。 =) –

関連する問題