2011-07-26 7 views
0

これは恐らく初心者のエスケープ問題です。私はこの`for`ループに` tee`をつけたパイプ

$ for SET in `ls ../../mybook/WS/wsc_production/`; do ~/sandbox/scripts/ftype-switch/typesort.pl /media/mybook/WS/wsc_production/$SET ./wsc_sorter/$SET | tee -a sorter.log; done; 

のようなforループでrunコマンドをしようとしているが、私はsorter.logが空の状態で終わります。 (の出力です)パイプ記号(\|)をエスケープすると、sorter.logはまったく表示されません。

私は間違っていますか?

$ bash --version 
GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu) 

編集:おっと、/メディア/のMyBookは/眠りに落ちたので、実際には何も出力はありませんでした。コードは最初は正しいものでした。コメントに感謝します。

+0

do〜/ sandbox/scripts/ftype-switch/typesort.pl/media/mybook/WS/wsc_production/$ SET。/ wsc_sorter/$ SET'の出力は何ですか? ($ SETを有効な値に置き換えてください) – KevinDTimm

+0

(1)なぜあなたはバックティック文字を倍増していますか? (2)出力がある場合は、端末に表示されるはずです。何も表示されない場合、ログは空になります。 –

+0

あなたはここでフォーマットする方法を再度読み直す必要があります。あなたのコマンドを囲む最も外側の\ ''文字を削除し、コードブロックを示すためにインデントするのに4つのスペースを使用する方がよいでしょう。また、ls ../../ mybook/WS/...の前に2つのバッククォートを持つことを本当に意味しますか?おそらく、コードのインライン書式設定を回避しようとしています。また、バッククォートは少なくとも1993年以来廃止されているので、コマンド置換には$(cmd)を使い始めることに注意してください。がんばろう。 – shellter

答えて

1

私の最も深い謝罪は、問題がどこか別の場所だったと私のスクリプトは、実際には全く何も出力しませんでした。今それは動作します。知識と経験

  • の欠如とも、不足の影響でコースの

    • を、bashのスクリプトに自信の欠如、私は問題は脱出であるという幻想を持って、なぜ

      つの理由注目の - それは、USB上のディスクが眠りに落ちたことを私の心の中に来なかったので、私は実際にそこにループをしようとしたときは、それはいくつかの知識に行く途中でつまずくのためだ、何も出力

    まあませんでした。 ..: )

  • 3

    あなたはteeを使用しています。出力がある場合は、端末に表示されます。あなたは何を見ますか?

    dir1=$HOME/sandbox/scripts/ftype-switch 
    dir2=/media/mybook/WS/wsc_production 
    for SET in ../../mybook/WS/wsc_production/*; do 
        $dir1/typesort.pl $dir2/$SET ./wsc_sorter/$SET 2>&1 | tee -a sorter.log 
    done 
    
    1

    グレンはそれをうまく言った:あなたは出力が表示された場合

    、それはあなたがそれをリダイレクトする場合がありますので、おそらく、あなたが見ている標準エラーです。別の角度を提示したいと思います。forループの外側で 'tee'コマンドを動かすことができます。このアプローチの利点は、ティーグラウンドで一度だけ呼び出されます。

    dir1=$HOME/sandbox/scripts/ftype-switch 
    dir2=/media/mybook/WS/wsc_production 
    for SET in ../../mybook/WS/wsc_production/*; do 
        $dir1/typesort.pl $dir2/$SET ./wsc_sorter/$SET 2>&1 
    done | tee -a sorter.log 
    
    +0

    ありがとう、それは私に貴重な時間を節約することができます:) –