Re: 'declare +a -g' destroys local arrays

2013-08-24 Thread Chet Ramey
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 8/22/13 4:52 AM, Arfrever Frehtes Taifersar Arahesis wrote:
> I use bash 4.2.45.
> 
> `man bash` says:
> "Using `+' instead of `-' turns off the attribute instead, with the 
> exceptions that +a may not be
> used to destroy an array variable and +r will not remove the readonly 
> attribute."
> 
> However 'declare +a -g' destroys local arrays, which do not shadow global 
> arrays:

Thanks for the report.  This has been fixed for bash-4.3, which is now in
beta.

Chet
- -- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.12 (Darwin)
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iEYEARECAAYFAlIZQZQACgkQu1hp8GTqdKvQ1QCgjn0mPzkpqPfkKHPzDwuCaTH6
wYkAniZqVQZO0hqOwC09YI5VbFhF7hRW
=TK+G
-END PGP SIGNATURE-



'declare +a -g' destroys local arrays

2013-08-22 Thread Arfrever Frehtes Taifersar Arahesis
I use bash 4.2.45.

`man bash` says:
"Using `+' instead of `-' turns off the attribute instead, with the exceptions 
that +a may not be
used to destroy an array variable and +r will not remove the readonly 
attribute."

However 'declare +a -g' destroys local arrays, which do not shadow global 
arrays:

$ f() { local ARRAY=(a b c); declare -p ARRAY; declare +a -g ARRAY; declare -p 
ARRAY; }
$ f
declare -a ARRAY='([0]="a" [1]="b" [2]="c")'
bash: declare: ARRAY: cannot destroy array variables in this way
bash: declare: ARRAY: not found
$ ARRAY=(x y z)
$ f
declare -a ARRAY='([0]="a" [1]="b" [2]="c")'
bash: declare: ARRAY: cannot destroy array variables in this way
declare -a ARRAY='([0]="a" [1]="b" [2]="c")'

--
Arfrever Frehtes Taifersar Arahesis


signature.asc
Description: This is a digitally signed message part.