On Sun, Feb 04, 2024 at 08:27:56PM +0300, Van de Bugger wrote:
> Case 3: echo $(false)
> 
> $ cat ./test  
> #!/bin/bash  
> set -e  
> echo before  
> echo $(false)  
> echo after
> 
> $ ./test  
> before
> 
> after
> 
> Oops, in this case the script is NOT terminated before "echo after", but
> continues to the end. I would say this is a bug, but interaction between "set 
> -
> e" and command substitution is not well defined in the bash manual.

I'm sure you can find explanations somewhere in the manual, after you
read it half a dozen times and then ask the Internet about the current
state of the POSIX standard and the current interpretation of how set -e
should work.  (It changes over time.)

Or... you could simply stop trying to understand it.  Dump it in the
rubbish bin of history where it belongs.

<https://mywiki.wooledge.org/BashFAQ/105> offers some more examples of
surprising behavior, along with explanations of each example.

Reply via email to