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

3945
math

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

foo | grep -v bar 

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

bar bar bar... 

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

6

2 ответа на вопрос

8
Goyuix

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

и это, кажется, даже в соответствии с Posix math 13 лет назад 0
Вы также можете сделать `|| true`, если вы пытаетесь обойти сбой в `set -e` Daenyth 13 лет назад 8
@Daenyth Конечно, это преобразует _every_ ненулевой код выхода в 0, а не только в 1. Marnix Klooster 7 лет назад 0
0
Marnix Klooster

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

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

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

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

Похожие вопросы