Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: set -e (no && or ||)



On Fri, 12 Oct 2012 07:05:41 -0400
Sergey Fadeev <hindsight@xxxxxxxxx> wrote:

> Why doesn't it exit the shell?
>  $ set -e
>  $ echo $(false)
>  Shouldn't the error code of $(false) command substitution be checked
> by set -e before passing stdout to the echo builtin?

No, because the command was "echo", and that didn't fail.  Exit status
effectively means exit status seen by the main shell command
interpreter ($?), although I'm sure there are some subtleties I haven't
thought about.

The way to get the status of a substitution to fail is to use an
assignment:

output=$(false)

which does cause the shell to exit on failure, because it would set $? to
1.  This is standard shell behaviour, though I can't point to where in
the standard it says.

pws



Messages sorted by: Reverse Date, Date, Thread, Author