How to undo the effect of "set -e" which makes bash exit immediately if any command fails?

Solution 1:

With set +e. Yeah, it's backward that you enable shell options with set - and disable them with set +. Historical raisins, donchanow.

Solution 2:

It might be unhandy to use set +e/set -e each time you want to override it. I found a simpler solution.

Instead of doing it like this:

set +e
command_that_might_fail_but_we_want_to_ignore_it
set -e

you can do it like this:

command_that_might_fail_but_we_want_to_ignore_it || true

or, if you want to save keystrokes and don't mind being a little cryptic:

command_that_might_fail_but_we_want_to_ignore_it || :

Hope this helps!

Solution 3:

  • Using + rather than - causes these flags to be turned off.

Source