zsh-workers
 help / color / mirror / code / Atom feed
From: "Andrej Borsenkow" <Andrej.Borsenkow@mow.siemens.ru>
To: "Bart Schaefer" <schaefer@candle.brasslantern.com>,
	"Deborah Ariel Pickett" <debbiep@mail.csse.monash.edu.au>,
	<zsh-workers@sunsite.dk>
Subject: RE: PATCH: 3.1.9-dev-8: Re: Word splitting in zsh
Date: Mon, 12 Feb 2001 10:38:42 +0300	[thread overview]
Message-ID: <000901c094c6$d2bcd500$21c9ca95@mow.siemens.ru> (raw)
In-Reply-To: <1010210202412.ZM20301@candle.brasslantern.com>

>
> This applies only to ${...+...} and ${...-...}, with or without the `:'.
> As I mentioned, there would be some benefit to also doing this for the
> ${...=...} forms, because then things like ${(A)foo="$bar[@]"} would work
> independently of the setting of shwordplit.
>

Is the following a bug in shell and should zsh emulate it?

bor@itsrm2% sh
$ set "a b c" 1 2
$ args ${foo="$@"}
3
a b c
1
2
$ args $foo
5
a
b
c
1
2

Compare with zsh:

bor@itsrm2% setopt shwordsplit
bor@itsrm2% set "a b c" 1 2
bor@itsrm2% print -l ${foo="$@"}
a
b
c
1
2

To explain what's going on:

In case of ${name-word} or ${name+word} sh does exactly *one* expansion (as
opposed to zsh that does two) with the pseudocode (e.g. for -)

if defined name
  replace $name
else
  replace expanded word

(BTW I was surprised to see that expansions in word actually nest;
${xxx-${yyy-bar}} results in ``bar'').

But in case of ${name=bar} the definition is

Assign Default Values. If parameter is unset or null, the expansion of word
will be assigned to parameter. In all cases, the final value of parameter will
be substituted. Only variables, not positional parameters or special
parameters, can be assigned in this way.

BUT sh has only scalar parameters - so, the "final value" can only be scalar
that it then word splitted - as happens in zsh :-) But it looks, like sh
behaves as in case of ${...-...}/${...+...} - i.e. it substitutes expansion of
word and assigns it to name. It smells like a bug in (our) sh to me.

-andrej

P.S. Deborah, it's probably becoming way too specific. Should we still Cc you?


  reply	other threads:[~2001-02-12  7:39 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <000d01c0926a$ce26c590$21c9ca95@mow.siemens.ru>
2001-02-09 18:18 ` Bart Schaefer
2001-02-10 20:24   ` PATCH: 3.1.9-dev-8: " Bart Schaefer
2001-02-12  7:38     ` Andrej Borsenkow [this message]
2001-02-12 14:12       ` Andrej Borsenkow
2001-02-12 19:38         ` Bart Schaefer
2001-02-13  7:51     ` More incompatibility :-) " Andrej Borsenkow
2001-02-13  9:26       ` Bart Schaefer
2001-02-13  9:57         ` Andrej Borsenkow
2001-02-13 19:33           ` Bart Schaefer
2001-02-14 18:00             ` Peter Stephenson
2001-02-15  6:17               ` Andrej Borsenkow
2001-02-15  8:34                 ` Bart Schaefer
2001-02-15 10:35                   ` More incompatibility (word splitting) Peter Stephenson
2001-02-16  7:43                     ` PATCH: " Bart Schaefer
2001-02-16  8:50                       ` Andrej Borsenkow
2001-02-16 17:03                         ` Bart Schaefer

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='000901c094c6$d2bcd500$21c9ca95@mow.siemens.ru' \
    --to=andrej.borsenkow@mow.siemens.ru \
    --cc=debbiep@mail.csse.monash.edu.au \
    --cc=schaefer@candle.brasslantern.com \
    --cc=zsh-workers@sunsite.dk \
    /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).