Код выхода из программы grep

Когда мне нужно подавить какой-то вывод, например

foo | grep -v bar

Но foo дает иногда только:

bar
bar
bar...

grep вернет -1. Как мне преобразовать код выхода 1 в 0?

2 ответа

Решение

Вы всегда можете попробовать передать это через что-то еще, например cat, чтобы избавиться от кода выхода из grep - хотя это может быть больший молот, чем вы хотите.

По крайней мере, в Bash, вы можете использовать

foo || (EC=$?; if [ $EC -ne 1 ]; then exit $EC; fi)

Это изменяет код выхода 1 на 0 и больше ничего не меняет.

(Возможно, не POSIX-совместимая, но, возможно, POSIX-совместимая версия существует.)

Другие вопросы по тегам