关联数组在函数体内声明时似乎默认是局部的,而它们应该是全局的。以下代码
#!/bin/bash
f() {
declare -A map
map[x]=a
map[y]=b
}
f
echo x: ${map[x]} y: ${map[y]}
产生输出:
x: y:
此时
#!/bin/bash
declare -A map
f() {
map[x]=a
map[y]=b
}
f
echo x: ${map[x]} y: ${map[y]}
产生输出:
x: a y: b
是否可以在函数中声明全局关联数组? 或者可以使用什么解决方法?
最佳答案
From: Greg Wooledge
Sent: Tue, 23 Aug 2011 06:53:27 -0700
Subject: Re: YAQAGV (Yet Another Question About Global Variables)bash 4.2 adds "declare -g" to create global variables from within a function.
谢谢格雷格!然而 Debian Squeeze 仍然有 Bash 4.1.5
关于bash - 关联数组默认是局部的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10806357/