Having the following bash script:
#!/bin/bash
set -e
function foo() {
# commands that might fails and I want to exit my script
...
echo "result I need as output"
}
my_var=$(foo)
echo "I don't want this if there is an error inside foo"
Using set -e
(in bash 4.4.19
) does not seem to work with subshells i.e. the last echo
command is still being executed). How can I write the code to make the script exit if any of the commands inside foo
terminate with non-zero exit code.
I am using bash GNU bash, version 4.4.19(1)-release (x86_64-apple-darwin16.7.0)
and the result of calling my script is (where the dots are replaced with an invalid command head -this
:
$ ./my_script
head: illegal option -- t
usage: head [-n lines | -c bytes] [file ...]
I don't want this if there is an error inside foo