[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: nameref and referenced variable scope, setting other attributes (was
From: |
Zachary Santer |
Subject: |
Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope) |
Date: |
Thu, 14 Mar 2024 10:15:35 -0400 |
On Thu, Mar 14, 2024 at 9:54 AM Greg Wooledge <greg@wooledge.org> wrote:
>
> I don't quite understand what this is saying. Do the variables have
> different names, or the same name? If they have different names, then
> the nameref shouldn't "hide" the other variable. But they can't have
> the same name, because a nameref pointing to itself is a circular
> reference and won't ever work under any circumstance.
>
> hobbit:~$ f() { local -n var=var; var=1; }; f
> bash: local: warning: var: circular name reference
> bash: warning: var: circular name reference
> bash: warning: var: circular name reference
>
> You don't even need an outer calling function to see this.
>
Editing things out of my original email to focus on this point:
On Sun, Mar 10, 2024 at 7:29 PM Zachary Santer <zsanter@gmail.com> wrote:
>
> $ cat ./nameref-what
> #!/usr/bin/env bash
>
> func_1 () {
> local var_3='EGG'
> func_2
> printf '%s\n' "func_1:"
> local -p var_3
> }
>
> func_2 () {
> local -n nameref_3='var_3'
> nameref_3='soufflé'
> local var_4='GROUND BEEF'
> local -n nameref_4='var_4'
> local -l nameref_4
> printf '%s\n' "func_2:"
> local -p nameref_3
> local -p var_3
> local -p nameref_4
> local -p var_4
> }
>
> func_1
>
> $ ./nameref-what
> func_2:
> declare -n nameref_3="var_3"
> ./nameref-what: line 31: local: var_3: not found
> declare -n nameref_4="var_4"
> declare -l var_4="GROUND BEEF"
> func_1:
> declare -- var_3="soufflé"
Not on a machine with bash right now. 'declare -p var_3' in func_2 ()
said var_3 was not found, despite it having just been set by assigning
a value to the nameref variable nameref_3.
- "local -g" declaration references local var in enclosing scope, Adrian Ho, 2024/03/10
- Re: "local -g" declaration references local var in enclosing scope, Kerin Millar, 2024/03/10
- Re: "local -g" declaration references local var in enclosing scope, Zachary Santer, 2024/03/10
- nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Zachary Santer, 2024/03/10
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Chet Ramey, 2024/03/13
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), alex xmb sw ratchev, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Greg Wooledge, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), alex xmb sw ratchev, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Zachary Santer, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Greg Wooledge, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope),
Zachary Santer <=
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Greg Wooledge, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Zachary Santer, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Chet Ramey, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), alex xmb sw ratchev, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Robert Elz, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Chet Ramey, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Zachary Santer, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Zachary Santer, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Chet Ramey, 2024/03/14
- Re: nameref and referenced variable scope, setting other attributes (was "local -g" declaration references local var in enclosing scope), Zachary Santer, 2024/03/14