linux - Bash 关联数组错误

标签 linux bash shell scripting sh

当尝试在 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/

相关文章:

bash - 比较日期的 Shell 脚本

java - 带有 Android 客户端 : connection timed out 的 Linux 服务器

linux - GNU netcat 退出代码总是 1?

linux - 在 Linux 中监视文件系统更改的最佳方法

regex - 用正则表达式查找替换文件内容

regex - 不允许父目录的文件路径的正则表达式

delphi - FireMonkey 中是否有用于显示文件系统/文件树的组件?

python - django-cms apphook url 不适用于使用 Python shell 的 reverse()

linux - 对符号 'pthread_key_delete@@GLIBC_2.2.5 的 undefined reference

linux - 在 linux 中对发送到 CPU 的两个信号使用react