gpt4 book ai didi

linux - '声明-A x' 与 'declare -A x=()'

转载 作者:IT王子 更新时间:2023-10-29 01:21:45 24 4
gpt4 key购买 nike

我使用的是 4.2.53(1)-release,由 Fedora 20 运行。

以下两段代码表现不同,谁能告诉我为什么?谢谢。

[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='()'

最佳答案

这是 4.0-4.2 中的错误。这是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.

这是 4.3 的结果,它们的行为相同:

$ 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" )'

关于linux - '声明-A x' 与 'declare -A x=()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27279087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com