繁体   English   中英

Shell脚本关联数组值覆盖

[英]shell script associate array value overwriting

当我总是运行以下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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM