On Mon, Jun 18, 2012 at 02:19:41PM +0100, Jacobo de Vera wrote:

> Subject: Re: Arrays declared global in function and initialised in same line 
> are not visible outside of function

I can't reproduce that problem:

imadev:~$ unset a; f() { declare -ga a=(1 2); }; f; declare -p a
declare -a a='([0]="1" [1]="2")'

> Since same line is the only way to initialise readonly arrays, this
> means there is no way to have readonly global arrays created from
> function.

I also can't reproduce it with readonly:

imadev:~$ bash-4.2 -c 'unset a; f() { declare -rga a=(1 2); }; f; declare -p a'
declare -ar a='([0]="1" [1]="2")'


> See the following script:
>     aa()
>     {
>         declare -gA arr1=(['key1']='value1')
>         declare -ga arr3=(valuea valueb)
>     }
> 
>     bb()
>     {
>         echo "Inside bb"
>         echo "Arr1: ${arr1[key1]}"
>         echo "Arr3: ${arr3[@]}"
>     }
> 
>     aa
>     bb

> Arrays arr1 and arr3, initialised on the same line as declared, are
> not visible outside the function where they are declared, whereas
> arrays modified in separate statements are.

I can't reproduce it that way either:

imadev:~$ f() { declare -ga a=(1 2); }; g() { declare -p a; }; f; g
declare -a a='([0]="1" [1]="2")'

Reply via email to