|
From: | Chet Ramey |
Subject: | Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope) |
Date: | Mon, 18 Mar 2024 16:19:55 -0400 |
User-agent: | Mozilla Thunderbird |
On 3/14/24 8:57 PM, Zachary Santer wrote:
On Thu, Mar 14, 2024 at 3:43 PM Chet Ramey <chet.ramey@case.edu> wrote:In fact, before 2020, local -p with no name arguments behaved the same as local without arguments, which just printed all the local variable names at the current scope in the form of assignment statements. That was certainly not usable to reproduce the current state.While we're kind of on the subject, I find it really odd that the ${var@A} parameter expansion will expand to either an assignment statement or a 'declare' command, depending on whether or not the variable has an attribute set.
Yes. There is one thing missing: the transformation should expand to a `declare' command when applied to a local variable at the current scope, even if there are no attributes to be displayed. Agreed? I am less convinced about outputting a `-g' for a global variable when called from a function scope, but I could be persuaded. Because of dynamic scoping, users will always have to be careful about using this expansion on variables that might be local variables at a previous function scope. I suppose it depends on the desired meaning of `recreate parameter'.
You'd think you'd want a parameter transformation that always expands to a 'declare' command, and maybe another one that always expands to an assignment statement.
Most of the time there isn't a difference between `declare a=b' and `a=b'. -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, UTech, CWRU chet@case.edu http://tiswww.cwru.edu/~chet/
OpenPGP_signature.asc
Description: OpenPGP digital signature
[Prev in Thread] | Current Thread | [Next in Thread] |