On Thursday 13 August 2009 09:04:32 Greg Wooledge wrote:
> 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.

right, but i didnt think these were word expansions.  that's all my point was.
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to