У меня есть задача разобрать файлы в подкаталоге определенных условиях, а затем выполнить что-то, так что у меня есть код, который отлично работает и выглядит следующим образом:Использование тест внутри 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';"
Проблема, что test $? -ne 0
внутри xargs всегда оценивает как истинные, Despites фактического результата Grep.
'cat file | условие grep -qe; тест $? -ne 0 && 'сумасшедший. Вместо этого используйте 'grep -qe файл условия &&'. – Sorpigal
Спасибо, я использовал это, но когда моя команда не работала, я начал экспериментировать с этим. – Vestel