When I need to suppress some kind of output e.g.
foo | grep -v bar
But foo gives sometimes only:
bar
bar
bar...
grep will return -1. How do I transform the exit code 1 to 0?
You could always try piping it through something else, like cat, to get rid of the exit code from grep - though that may be a bigger hammer than you want.
At least in bash, you can use
foo || (EC=$?; if [ $EC -ne 1 ]; then exit $EC; fi)
This changes exit code 1 to 0, and changes nothing else.
(Perhaps not POSIX-compliant, but probably a POSIX-compliant version exists.)