これは恐らく初心者のエスケープ問題です。私はこの`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は/眠りに落ちたので、実際には何も出力はありませんでした。コードは最初は正しいものでした。コメントに感謝します。
do〜/ sandbox/scripts/ftype-switch/typesort.pl/media/mybook/WS/wsc_production/$ SET。/ wsc_sorter/$ SET'の出力は何ですか? ($ SETを有効な値に置き換えてください) – KevinDTimm
(1)なぜあなたはバックティック文字を倍増していますか? (2)出力がある場合は、端末に表示されるはずです。何も表示されない場合、ログは空になります。 –
あなたはここでフォーマットする方法を再度読み直す必要があります。あなたのコマンドを囲む最も外側の\ ''文字を削除し、コードブロックを示すためにインデントするのに4つのスペースを使用する方がよいでしょう。また、ls ../../ mybook/WS/...の前に2つのバッククォートを持つことを本当に意味しますか?おそらく、コードのインライン書式設定を回避しようとしています。また、バッククォートは少なくとも1993年以来廃止されているので、コマンド置換には$(cmd)を使い始めることに注意してください。がんばろう。 – shellter