2012-02-17 7 views
0

内テストを使用して、私は特定の条件のためのサブディレクトリ内のファイルを解析して、何かを実行するためのタスクを持っているので、私は正常に動作し、このようなコードを持っている:私がしようとすると、xargsの

cat FILENAME | grep -qe 'condition'; \ 
    test $? -ne 0 && echo -ne '\n add condition to file \n'>>FILENAME 

しかし、 test $? -ne 0内部xargsのは、常に実際のgrepの結果despites、trueと評価することを

git grep -e "condition" | awk -F : 'BEGIN {} { print $1 } END {}'| sort| uniq |\ 
    xargs -I {} -i bash -c "cp {} {}.updated; echo -ne 'Processing: {}\n'; \ 
    cat {}.updated | grep -qe 'condition'; \ 
    test $? -ne 0 && echo -ne '\n add condition\n' >>{}.updated; \ 
    mv {} {}.backup; mv {}.updated {}; echo -ne ' End\n';" 

問題:xargsの声明でこれを使用するために、私はいくつかの問題を抱えています。

+2

'catファイル| grep -qe条件。テスト$? -ne 0 && 'は狂っています。代わりに 'grep -qe condition file &&'を使用してください。 – Sorpigal

+0

ありがとう、私はそれを使用していたが、私のコマンドが機能していないとき、私はそれを試し始めた。 – Vestel

答えて

3

$を変更してみますか? \ $に?

バッシュはおそらく$を評価していますか?早期に

+0

または '-c'に渡されるスクリプト文字列を一重引用符で囲みます。 – Sorpigal

関連する問題