我的期望是 bash 数组中的键被解释为文字,但似乎并非如此。例如,以下按预期工作:
$ declare -a mymap
$ mymap[foo]="bar"
没问题,我们现在有一个带有键的数组,字面意思是 “foo”
。但是当我设置一个与键同名的环境变量,并在其中放入特殊字符时,它会产生解析错误:
$ declare -a mymap
$ export foo=" > "
$ mymap[foo]="bar"
-bash: >: syntax error: operand expected (error token is ">")
$ mymap["foo"]="bar"
-bash: >: syntax error: operand expected (error token is ">")
$ mymap['foo']="bar"
-bash: >: syntax error: operand expected (error token is ">")
谁能解释一下我在这里缺少什么?我使用的是 bash 版本 4.3.33。
最佳答案
使用-A
声明一个带有字符串键的关联数组。 -a
创建一个索引数组,其键在算术上下文中计算。
$ declare -A mymap
$ export foo=' > '
$ mymap[foo]="bar"
$ echo "${mymap[foo]}"
bar
$ declare -p mymap
declare -A mymap='([foo]="bar" )'
关于arrays - Bash 数组键与现有变量冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29906615/