From: Mikael Magnusson <mikachu@gmail.com>
To: Peter Stephenson <p.w.stephenson@ntlworld.com>
Cc: zsh workers <zsh-workers@zsh.org>
Subject: Re: Bug with continue?
Date: Tue, 28 Mar 2023 13:19:30 +0200 [thread overview]
Message-ID: <CAHYJk3TWqHFpdj7154VcrQW5oj8OQdC-+S9MQS+jWS6X3+XU3A@mail.gmail.com> (raw)
In-Reply-To: <16795430.3614208.1679998628194@mail.virginmedia.com>
On 3/28/23, Peter Stephenson <p.w.stephenson@ntlworld.com> wrote:
>> On 28/03/2023 10:32 Felipe Contreras <felipe.contreras@gmail.com> wrote:
>> I notice this works differently in zsh than in other shells:
>>
>> for x in 1 2 3 4; do
>> continue &&
>> list="$list$x " &&
>> echo "x: $x"
>> done
>> echo "list: $list"
>>
>> Why did the statement after `continue` gets evaluated?
>>
>> The original code tries to do something useful `case "$x" in 1)
>> continue ;; esac &&` but it shouldn't matter.
>>
>> I tried in bash, ksh, and dash, and all of them continue immediately,
>> except zsh.
>>
>> That can't be the desired behavior, can it?
>
> That looks like it probably ought to be regarded as a bug to me, yes ---
> I guess it's been hidden because the test "if this statement successfully
> jumped somewhere completely different then..." isn't spectacularly useful.
> However, it's not logically wrong, either.
>
> I think we had something a little similar to this recently; it usually
> boils down to something quite simple once you've found it and I'll
> have a look when I've got more time. (Patch would go to zsh-workers.)
Some observations that may or may not be helpful:
Replacing continue && with ! continue || has the same effect,
chaining continue && false && a=b still does the assignment,
doing continue && { a=b } works, eg it does not do the assignment,
same with if continue; then ...
--
Mikael Magnusson
next parent reply other threads:[~2023-03-28 11:19 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAMP44s3NCDJU9TcSuSgy5oH=-iK3zpP3Vc1+95d3n16uydHhFA@mail.gmail.com>
[not found] ` <16795430.3614208.1679998628194@mail.virginmedia.com>
2023-03-28 11:19 ` Mikael Magnusson [this message]
2023-03-28 13:16 ` Peter Stephenson
2023-03-30 8:08 ` Felipe Contreras
[not found] ` <805138511.3622784.1680002886460@mail.virginmedia.com>
2023-03-28 11:56 ` Peter Stephenson
2023-03-29 10:02 ` Peter Stephenson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAHYJk3TWqHFpdj7154VcrQW5oj8OQdC-+S9MQS+jWS6X3+XU3A@mail.gmail.com \
--to=mikachu@gmail.com \
--cc=p.w.stephenson@ntlworld.com \
--cc=zsh-workers@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).