2014-12-03 19 views
5

Sto usando 4.2.53 (1) -RELEASE, che è gestito dal Fedora 20.'dichiarare -A x' vs 'dichiarare -A x =()'

I seguenti due pezzi di codice si comportano diversamente, qualcuno può dire perché? Grazie.

[hidden]$ unset x; declare -p x; function f() { declare -A -g x; x[10]=100; }; f; declare -p x; 
-bash: declare: x: not found 
declare -A x='([10]="100")' 
[hidden]$ unset x; declare -p x; function f() { declare -A -g x=(); x[10]=100; }; f; declare -p x; 
-bash: declare: x: not found 
declare -A x='()' 

risposta

5

Questo era un bug in 4.0-4.2. E 'stato fixed in 4.3:

ddd. Fixed several bugs that caused `declare -g' to not set the right global 
    variables or to misbehave when declaring global indexed arrays. 

Ecco il risultato sul 4.3, in cui si comportano in modo identico:

$ echo $BASH_VERSION 
4.3.11(1)-release 

$ unset x; declare -p x; function f() { declare -A -g x; x[10]=100; }; f; declare -p x; 
bash: declare: x: not found 
declare -A x='([10]="100")' 

$ unset x; declare -p x; function f() { declare -A -g x=(); x[10]=100; }; f; declare -p x; 
bash: declare: x: not found 
declare -A x='([10]="100")' 
Problemi correlati