在xargs中使用测试

时间:2012-02-17 13:55:49

标签: 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 {} { 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中的test $? -ne 0始终评估为true的问题,请求实际的grep结果。

1 个答案:

答案 0 :(得分:3)

尝试更改$?到\ $?

Bash可能正在评估$?过早