Я передаю некоторые выходные данные команды egrep, которую я использую, чтобы убедиться, что конкретная строка ошибки не появляется.
Сама команда, к сожалению, не вернет ненулевой статус выхода при сбое, поэтому я делаю это.
command | egrep -i -v "badpattern"
Это работает так, что дает мне код выхода, который я хочу (1, если badpattern появляется в выходных данных, 0 в противном случае), НО, он будет выводить только строки, которые не соответствуют шаблону (как ключ -v был предназначен для этого). Для моих нужд эти строки - самые интересные.
Есть ли способ заставить grep просто вслепую проходить через все строк, которые он получает в качестве входных данных, и просто давать мне соответствующий код выхода?
Если нет, я подумал, что я мог бы просто использовать perl -ne "print; exit 1, если / badpattern /". Я использую -n, а не -p, потому что -p не будет печатать ошибочную строку (так как она печатает после запуска одной строки). Итак, я использую -n и сама вызываю print
, что, по крайней мере, дает мне первую оскорбительную строку, но затем вывод (и выполнение) на этом останавливается, поэтому мне придется сделать что-то вроде
perl -e '$code = 0; while (<>) { print; $code = 1 if /badpattern/; } exit $code'
, который делает все дело, но немного, есть ли простой переключатель командной строки для grep, который будет просто делать то, что я ищу?