当尝试在 bash 中执行以下命令时
foo=foo
my_array[$foo]=bar
我收到错误“bash: foo: expression recursion level exceeded (error token is "foo")”。但这很好用:
foo=hello
my_array[$foo]=bar
为什么会这样?
最佳答案
问题是您没有将数组声明为关联数组,因此假定它是一个数值数组。当 bash 尝试评估时
my_array[$foo]=bar
他进来的是
my_array[foo]=bar
但是数组索引不是数字,所以他再次尝试计算它,导致
my_array[foo]=bar
因为您不需要在方括号之间使用 $。您可以看到这种情况一直持续到抛出超出递归级别的异常为止。
要解决它,只需将数组声明为关联的:
declare -A my_array
关于linux - Bash 关联数组错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10258686/