[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Assigning to multiple variables on same line
From: |
Greg Wooledge |
Subject: |
Re: Assigning to multiple variables on same line |
Date: |
Thu, 13 Aug 2009 09:04:32 -0400 |
User-agent: |
Mutt/1.4.2.2i |
On Thu, Aug 13, 2009 at 02:45:51AM -0400, Mike Frysinger wrote:
> i dont think word expansion occurs first, otherwise wouldnt this break:
> foo() {
> unset b c
> f="a b="
> local a=$f c=
As I understand it, this is what happens:
1) The parser separates out the tokens that constitute the command. These
are `local', `a=$f', and `c='. The meaning of each token is determined.
2) Parameter expansion is performed on the $f. But this can't create a
new token. It's too late for that. The whitespace becomes part of
the second token. (If you wanted a new token, you'd have to use eval.)
3) The `local' command is actually executed, performing the assignments,
and returning its own exit status.
I don't have Chet's insight on all this, so I may be skipping something
critical, or misrepresenting a step.