У меня есть задача проанализировать файлы в подкаталоге для определенных условий, а затем выполнить что-то, поэтому у меня есть код, который работает нормально и выглядит так:
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.