Shell脚本关联数组值覆盖



当我运行下面的shell脚本时,我总是得到任何键的输出为"grault"。问题是什么?

谢谢!

#!/bin/bash
declare -a MYMAP                             
MYMAP=( [foo]=bar [baz]=quux [corge]=grault ) 
echo ${MYMAP[foo]}
echo ${MYMAP[baz]}

创建-A:

关联数组
declare -A MYMAP

参见:help declare

另一个答案描述了如何正确地做到这一点,但这里解释了为什么你的例子是这样做的。

declare -a创建了一个索引数组,它应该只接受整数作为索引。如果您提供一个字符串作为索引,它将忽略它并将其视为0!(我认为这是一个糟糕的行为,它应该给出一个错误)。

这就是你的代码翻译成:

declare -a MYMAP # create indexed array                           
MYMAP=( [0]=bar [0]=quux [0]=grault ) 
echo ${MYMAP[0]} # grault
echo ${MYMAP[0]} # grault

相关内容

  • 没有找到相关文章

最新更新