Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
尝试在 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
但数组索引仍然不是数字,所以他尝试再次评估它,导致
因为您不需要在方括号之间使用 $ 。您可以看到这种情况一直持续下去,直到引发超出递归级别的异常。
要解决它,只需将数组声明为关联:
declare -A my_array