2012-01-30 7 views
1

私はその原因を知らない問題に遭遇しました。両方出力と機能「テスト」からのrsync出力をエコー含むことになる上記の例file_A.txtなぜ、Teeはすべての出力(Bash)を書きませんか?

test() 
{ 
    echo "This will be printed to the file" 

    #But the output of rsync will not 
    rsync -av /path/A /path/B 

    echo "This will be printed to the file" 
} 

function_calling_test() 
{ 
    test | tee -a "file_B.txt" 
} 

function_calling_test | tee -a "file_A.txt" 

:私は説明するための最も簡単な方法は、コード例によるものであると思いfile_B.txtには、エコー出力のみが含まれます。どうしてこれなの?あなたは、ストリーム

mytest() 
{ 
    echo "This will be printed to the file" 

    #But the output of rsync will not 
    rsync -av /path/A /path/B 2>&1 
    # -----------------------^^^^^^ 

    echo "This will be printed to the file" 
} 

testにstderr出力を追加する必要が

+1

私は 'file_B.txt'と' file_A.txt'の両方で同じ出力を得ています。いずれのファイルにもないのは、リダイレクトされていないため、 'rsync'が' stderr'に出力するものだけです。 – jcollado

+0

'test'という関数には十分注意してください。 'test 'という組み込みのコマンドもあります。より一般的に' ['として使われますが、どちらも存在します。あるいは、 'bash'の下では、' test'コマンドは '/ bin'のコマンドですが、あなた自身の目的に' test'を使うことには依然として慎重です。 –

答えて

1

は、UNIX/LinuxのOSの一部であるすべてのUNIXシェルで利用できるコマンドです。あなたの機能を単純なテストの名前にしないでください、あなたは事故のために自分自身を設定しています! ;-)

私はこれが役に立ちそうです。

+0

"テスト"は単なる例で、私は実際にその名前の関数を持っていません:)しかし、エラー出力がなくても出力は得られませんが、それは奇妙に思えます...しかし、今夜遅く。ありがとう! – Niklas

+0

あなたに迷惑を掛けて申し訳ありませんが、私はteeが書き込みを行っていたファイルを操作しているうちにエラーがどこかにあることがわかりました。あなたの答えをありがとう! – Niklas

+0

あなたの問題をデバッグするうまい仕事!投票に感謝します。継続的な成功! ;-) – shellter

関連する問題