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条件文件&&
。谢谢,我正在使用它,但是当我的命令不起作用时,我开始尝试使用它。