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 --]
next prev parent 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).