The man page says:

    The shell does not exit if the command that fails is part  of  the
    command list  immediately  following  a  while or until keyword,
    part of the test  following  the  if  or  elif  reserved words,
    part  of any command executed in a && or || list except the
    command following the final  &&  or  ||,  any command  in a
    pipeline but the last, or if the command's return value is being
    inverted with !.
The fact that [ exits with 1 seems to be covered by the above passage for
-e.


On Fri, Dec 22, 2017 at 10:50 AM, DJ Mills <danielmil...@gmail.com> wrote:

>
>
> On Fri, Dec 22, 2017 at 1:39 PM, Kevin Layer <la...@known.net> wrote:
>
>> The bug happens to me on
>> GNU bash, version 4.1.2(2)-release (x86_64-redhat-linux-gnu)
>> and
>> GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin16.4.0)
>>
>> The script is attached, but the function in question is this:
>>
>> function debug1 {
>>     [ "$debug" ] && echo "$(date "+%Y-%m-%d %H:%M:%S"): $@"
>> }
>>
>>
> This is expected behavior. When "$debug" is empty, the [ command exits 1.
> That means the && isn't
> run, and the whole function returns with the status of the last run
> command, which is still 1 at this point.
>
>  http://mywiki.wooledge.org/BashFAQ/105
>

Reply via email to