[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Passing variables by reference conflicts with local
From: |
Greg Wooledge |
Subject: |
Re: Passing variables by reference conflicts with local |
Date: |
Thu, 26 Apr 2012 08:11:00 -0400 |
User-agent: |
Mutt/1.4.2.3i |
On Wed, Apr 25, 2012 at 04:46:02PM -0700, Linda Walsh wrote:
> I would guess (without looking at the codE), that
> when you do a local, it creates another copy of 'var' at the end of an
> array.
> like var[0][1]
> so global is at 0, and local is at 1.
I'm pretty sure bash doesn't use a multidimensional array to do variable
scoping. I'd expect some sort of a stack.
> As to whether or not it is "correct" by some arbitrarily set standard or
> definition of "correct" -- that's a matter for nit-pickers and POSIXies.
> :-)
Bash uses "dynamic scoping", which is a somewhat controversial choice, and
has led to a whole lot of confusion in the past. Most other shells use
static scoping. POSIX has nothing to say on the matter; "local" is not
defined in POSIX, and POSIX does not even require functions to implement
local variables at all (let alone dictate what kind of scoping to use).
POSIX on functions:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_05
Wikipedia on dynamic scoping:
http://en.wikipedia.org/wiki/Scope_%28computer_science%29#Dynamic_scoping
Re: Passing variables by reference conflicts with local, Chet Ramey, 2012/04/28
Re: Passing variables by reference conflicts with local, Dan Douglas, 2012/04/30