Bash关联数组错误

时间:2012-04-21 11:59:06

标签: linux bash shell scripting sh

在bash中尝试执行以下内容时

foo=foo
my_array[$foo]=bar

我得到错误'bash:foo:超出表达式递归级别(错误标记是“foo”)'。但这很好用:

foo=hello
my_array[$foo]=bar

为什么会这样?

1 个答案:

答案 0 :(得分:3)

问题是你没有声明你的数组是关联的,所以假设它是一个数字数组。当bash试图评估时

my_array[$foo]=bar

他的意思是

my_array[foo]=bar

但是数组索引仍然不是数字,所以他试图再次评估它,导致

my_array[foo]=bar

因为您不需要在方括号之间使用$。您可以看到这种情况一直持续到递归级别超出异常为止。

要解决它,只需将数组声明为关联:

declare -A my_array