Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Global And Local Variables in zsh Functions
- X-seq: zsh-users 20396
- From: Georg Wittig <nc-wittigge@xxxxxxxxxxxxx>
- To: zsh-users@xxxxxxx
- Subject: Global And Local Variables in zsh Functions
- Date: Sun, 9 Aug 2015 00:44:57 +0200
- List-help: <mailto:zsh-users-help@zsh.org>
- List-id: Zsh Users List <zsh-users.zsh.org>
- List-post: <mailto:zsh-users@zsh.org>
- Mailing-list: contact zsh-users-help@xxxxxxx; run by ezmlm
Hi,
I'm writing a zsh script that's constructing a rather complex rsync
command. One part of the script is constructing a list of exclude
commands for rsync. For this I use a global variable EXC. It is built
in the following way
EXC=''
function my_f1 () {
EXC+=" --exclude='$1'";
}
my_f1 /tmp
my_f1 /opt/windows7
echo ">>>$EXC<<<"
Function my_f1 does a lot of other things that are not relevant in
this context. The output of that script snippet is
>>> --exclude='/tmp' --exclude='/opt/windows7'<<<
which is exactly what I want.
Now I need that function my_f1 return another value that depends on
it's input parameter. So I rewrote my_f1 to my_f2 which looks as follows
EXC=''
function my_f2 () {
EXC+=" --exclude='$1'";
local x="some value depending on $1"
echo $x
}
x1=$(my_f2 /tmp)
x2=$(my_f2 /opt/windows7)
echo ">>>$EXC<<<"
To my surprise, EXC is empty now: The output is
>>><<<
Why is EXC empty in the case of my_f2, and correct in the case my_f1?
Exists there an influence of the local variable x, or is the culprit
the way that my_f2 returns it's value to the calling point? How do I
rewrite my_f2 such that the value of EXC is correct?
Thanks for your hints,
--Georg
[zsh-5.0.8-5.fc22.x86_64]
Messages sorted by:
Reverse Date,
Date,
Thread,
Author