zsh-users
 help / color / mirror / code / Atom feed
From: Perry Smith <pedz@easesoftware.com>
To: Peter Stephenson <p.stephenson@samsung.com>
Cc: zsh-users@zsh.org
Subject: Re: Is quoting of the assigned value needed?
Date: Fri, 22 Nov 2019 08:07:11 -0600	[thread overview]
Message-ID: <948D905A-5446-4B89-8F47-74FF6A2B1B95@easesoftware.com> (raw)
In-Reply-To: <1574419508.4702.10.camel@samsung.com>

[-- Attachment #1: Type: text/plain, Size: 1996 bytes --]



> On Nov 22, 2019, at 4:45 AM, Peter Stephenson <p.stephenson@samsung.com> wrote:
> 
> On Fri, 2019-11-22 at 03:03 +0100, Sebastian Gniazdowski wrote:
>> Hello,
>> SH_WORD_SPLIT doesn't seem to cause any effects in this context:
>>  
>> setopt SH_WORD_SPLIT
>> var1="a   b"
>> var2=$var1
>> print "$var2"
>>  
>> Output: a   b
> 
> Correct, there's no splitting there: you've got a quoted assignment, a
> single word assignment, and quoted output.
> 
> What you should be doing depends on what you're trying to do, which you
> don't say.  Do you want var2 to be an array of split parts of $var1?  In
> that case, do an array assignment.
> 
> var2=($var1)

One of the things I do when I’m exploring things like this is write a
silly script that echos out the number of args being passed to it:

% cat <<'EOF' > /tmp/count.sh
#!/bin/zsh -f

echo "$#"
EOF

% chmod +x /tmp/count.sh

% var1="a b"

% setopt nosh_word_split
% /tmp/count.sh $var1   
1

% setopt sh_word_split 
% /tmp/count.sh $var1 
2

Also, when I first started exploring zsh, someone suggested to look at
the zshall man page which is what I do in questions like this.  Then
search for SH_WORD_SPLIT and see all the places that it comes up.

It surprised me that this:

var2=$var1

worked as it does but bash does the same thing.

Drifting off topic slightly... I've had to break some of my old
habits.  With bash, I would just ALWAYS do "${foo}" ... 100% of the
time.  Which is why the assignment above surprised me.  I would have
always just done:

var2="${var1}"

With zsh, not only is this unnecessary ... but it is also "wrong" (or
perhaps I should say "not what I want") when dealing with arrays.  And
using arrays in zsh appears to be where a lot of the power is at which
I never really took advantage of with bash.  Arrays in bash always
seemed like they were playing catch up with ksh and not really a
native bash ground up design and implementation.


[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 2966 bytes --]

  reply	other threads:[~2019-11-22 14:08 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20191122020437eucas1p128174332018d20a266f55007fcf271ba@eucas1p1.samsung.com>
2019-11-22  2:03 ` Sebastian Gniazdowski
2019-11-22 10:45   ` Peter Stephenson
2019-11-22 14:07     ` Perry Smith [this message]
2019-11-22 14:31       ` Peter Stephenson
2019-11-22 14:59         ` Perry Smith
2019-11-22 15:01     ` Sebastian Gniazdowski
2019-11-22 15:06       ` Peter Stephenson
2019-11-22 16:26         ` Sebastian Gniazdowski
2019-11-23 18:01           ` Sebastian Gniazdowski

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=948D905A-5446-4B89-8F47-74FF6A2B1B95@easesoftware.com \
    --to=pedz@easesoftware.com \
    --cc=p.stephenson@samsung.com \
    --cc=zsh-users@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).