我有一个任务要解析某些条件的子目录中的文件然后执行某些操作,所以我有一个工作正常的代码,如下所示:
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结果。
答案 0 :(得分:3)
尝试更改$?到\ $?
Bash可能正在评估$?过早