Когда мне нужно подавить какой-то вывод, например
foo | grep -v bar
Но foo дает иногда только:
bar
bar
bar...
grep вернет -1. Как мне преобразовать код выхода 1 в 0?
Вы всегда можете попробовать пропустить это через что-то еще, например, cat
, чтобы избавиться от кода выхода из grep - хотя это может быть большим молотком, чем вы хотите.
По крайней мере, в Bash, вы можете использовать
foo || (EC=$?; if [ $EC -ne 1 ]; then exit $EC; fi)
Это изменяет код выхода 1 на 0 и больше ничего не меняет.
(Возможно, не POSIX-совместимая, но, возможно, POSIX-совместимая версия существует.)