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

Re: zsh syntax check fails on correct if [[ usage (rhbz 966911)



On Oct 18,  4:56pm, Peter Stephenson wrote:
} Subject: Re: zsh syntax check fails on correct if [[ usage (rhbz 966911)
}
} On Fri, 18 Oct 2013 08:48:31 -0700
} Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> wrote:
} > If you run the test as
} > 
} >     zsh -vxn /tmp/test.zsh
} > 
} > it becomes clear that zsh is actually executing some of the commands,
} > and then returning the exit status of those commands rather than of
} > the syntax check itself.
} 
} It's certainly forking, and I think it's peforming the assignments, and
} it seems to perform the test.  The problem here is we don't actually
} have a syntax checking mode, we just have a mode that tries to execute
} as little as possible.  As little as possible isn't a very clear target.

Well, yeah, but it's really strange that in some cases it executes NOTHING,
and in other very similar cases it executes the tests and assignments, and
it's really not obvious why there's a difference.

Compare these three commands:

Src/zsh -fvxnc 'if [[ $# -gt 0 ]]; then :; X=$1; fi'

Src/zsh -fvxnc 'if [[ $# -gt 0 ]]; then X=$1; fi'

Src/zsh -fvxnc 'if [ $# -gt 0 ]; then X=$1; fi'

Why does the inclusion of the ":" in the first case cause the execution of
the test to be skipped?  Why does the use of [[ ]] in place of [  ] cause
the test to be executed?

Additionally:
Why doesn't -v result in any output when used with -c ?  If you put any
of the above one-liners in a file and executed it as a script, it gets
printed as verbose output.



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