While debugging an issue with one of my scripts, I wanted to abort execution and exit when a non-zero return code occurred. I recalled reading about a bash flag that provided this behaviour, and after a few minutes of reading through bash(1) I came across the following set option:
“-e Exit immediately if a simple command (see SHELL GRAMMAR above) exits with a non-zero status. The shell does not exit if the command that fails is part of the command list immediately following a while or until keyword, part of the test in an if statement, part of a && or|| list, or if the command’s return value is being inverted via !. A trap on ERR, if set, is executed before the shell exits.”
So given the following test script that calls a non-existent command /bin/bork:
$ cat test
/bin/bork
echo “Made it after the bork”
We can see that a normal run completes to the end:
$ sh test
test: line 1: /bin/bork: No such file or directory
Made it after the bork
But an invocation with the “-e” option exits when a non-zero return value occurs:
$ sh -e test
test: line 1: /bin/bork: No such file or directory
The bash manual page is full of super interesting stuff, and I just printed it out to learn more! Nice!