[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: set -e and OR-lists
From: |
Chet Ramey |
Subject: |
Re: set -e and OR-lists |
Date: |
Fri, 23 Feb 2007 16:59:36 -0500 |
User-agent: |
Thunderbird 1.5.0.9 (Macintosh/20061207) |
Johan Hovold wrote:
> Hi,
>
> Is the following behaviour intended or a bug in bash (3.1.17(1)-release)? The
> command list
>
> (set -e; false; echo hello)
>
> does not print hello and has non-zero exit status. All fine. If I try to use
> this fact to display an error message the semantics changes. The following
> command
>
> (set -e; false; echo hello) || echo fail
>
> _does_ print hello _rather_ than fail. Why is this? One could argue that the
> first echo command is now part of an OR-list, but this on the parent-shell
> level (where set -e has no other effects) and via the command list, and not
> in the subshell.
>
> A corresponding change occurs if the command list is part of an AND-list.
The subshell inherits the knowledge it's part of an AND or OR list.
Chet
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
Live Strong. No day but today.
Chet Ramey, ITS, CWRU chet@case.edu http://cnswww.cns.cwru.edu/~chet/