On Monday 10 August 2009 15:25:23 Chet Ramey wrote: > Yang Zhang wrote: > > Why does assigning to multiple variables on the same line exhibit > > sequential consistency normally but not for local variables? > > Because `local' is a command, and word expansion is performed on its > arguments before it's invoked. This means the expansion is performed > before `local' performs the assignment (local sees two arguments: > `a=x' and `b='). Variable assignments by themselves behave differently -- > expansion and assignment are done at the same time.
i dont think word expansion occurs first, otherwise wouldnt this break:
foo() {
unset b c
f="a b="
local a=$f c=
echo a:$a
echo b:${b+set}
echo c:${c+set}
}
it certainly works with bash, as does `declare` ... that is, we see:
a:a b=
b:
c:set
-mike
signature.asc
Description: This is a digitally signed message part.
