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

Re: Is quoting of the assigned value needed?




> On Nov 22, 2019, at 4:45 AM, Peter Stephenson <p.stephenson@xxxxxxxxxxx> 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: smime.p7s
Description: S/MIME cryptographic signature



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