This seem linked:

  $ f() {
        local -a a=('' 'foo');
        local -n b=a[1];
        echo $b;
        b+=\ bar;
        echo $b;
        declare -p a;
    }

  $ f
  foo
  foo bar
  declare -a a=([0]="" [1]="foo bar")

Ok, fine!

  $ bash <(declare -f f | sed '1,2d; $s/.*/echo $BASH_VERSION/;
                               s/local /declare /;')
  foo
  fooa[1] bar
  declare -a a=([0]="" [1]="fooa[1] bar")
  5.1.4(1)-release

There is something!
New try:

  $ f() {
        local -ai a=(0 12);
        local -n b=a[1];
        echo $b;
        b+=4;
        echo $b;
        declare -p a;
    }

  $ f
  12
  16
  declare -ai a=([0]="0" [1]="16")

Seem good!

  $ bash <(declare -f f |
           sed '1,2d;$s/.*/echo $BASH_VERSION/;s/local /declare /;')
  12
  /dev/fd/63: line 4: a[1]4: syntax error in expression (error token is "4")
  12
  declare -ai a=([0]="0" [1]="12")
  5.1.4(1)-release

-- 
 Félix Hauri  -  <fe...@f-hauri.ch>  -  http://www.f-hauri.ch

Reply via email to