Here is a simple question. Why does this not behave the way I think it would:
(echo "Test 1"; exit) && echo "Test 2"
...or...
VAR1=1
VAR2=2
[ $VAR1 == $VAR2 ] || (echo '$VAR1 does not equal $VAR2, exiting.'; exit)
echo -e 'Well, I\'m still alive yo!'
Running either of those two snippets will result in script execution continuing despite an explicit exit
command.
Obviously the parentheses are affecting the command for some reason, my question is why?
From http://tldp.org/LDP/abs/html/subshells.html
A command list embedded between parentheses runs as a subshell.
( command1; command2; command3; ... )
A code block between curly brackets does not launch a subshell.
{ command1; command2; command3; . . . commandN; }
In the first case the exit is being run by the sub shell which terminates and returns control to the invoking shell.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With