bug-bash
[Top][All Lists]
Advanced

[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.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]