Bash 在xargs中使用test

Bash 在xargs中使用test,bash,grep,xargs,Bash,Grep,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 {}

我的任务是在特定条件下解析子目录中的文件,然后执行某些操作,因此我有一个代码,它运行良好,如下所示:

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始终计算为true,而忽略实际的grep结果

尝试更改$?到\$


Bash可能正在评估$?过早地

或仅引用传递给
-c
cat file | grep-qe条件的脚本字符串;测试$-ne 0&
太疯狂了。改为使用
grep-qe条件文件&&
。谢谢,我正在使用它,但是当我的命令不起作用时,我开始尝试使用它。