2012-02-17 55 views
0

我有任務在子目錄一定條件下解析一個文件,然後執行一些東西,所以我必須工作正常,看起來像這樣的代碼:使用測試裏面xargs的

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

但是,當我嘗試在xargs的語句中使用這個我有一些問題:

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';" 

問題test $? -ne 0內xargs的結果總是爲真,despites實際grep的結果。

+2

'cat file | grep -qe條件;測試$? -ne 0 &&'瘋了。改用'grep -qe條件文件&&'。 – Sorpigal 2012-02-17 14:29:01

+0

謝謝,我正在使用它,但是當我的命令不起作用時,我開始試驗這個。 – Vestel 2012-02-17 14:51:30

回答

3

嘗試更改$?到\ $?

Bash可能正在評估$?過早

+0

或者只是單引號傳遞給'-c'的腳本字符串。 – Sorpigal 2012-02-17 14:27:29