2013-04-23 42 views
5

我试图通过以下方式击与空间关联数组在密钥

#!/bin/bash 
hash["name"]='Ashwin' 
echo ${hash["name"]} 

这将打印所需的输出以创建在bash关联数组。

但是当钥匙中有一个空间,

#!/bin/bash 
hash["first name"]='Ashwin' 
echo ${hash["first name"]} 

我收到以下错误

test2.sh: line 2: first name: syntax error in expression (error token is "name") 

是关键不允许有中有空格?

+2

根据你使用bash 3.猛砸3不支持关联数组回答您的评论测试,这里有一些[解决方法](http://stackoverflow.com/questions/11776468/create-associative-array-in-bash-3) – iruvar 2013-04-23 19:23:53

+2

由于'bash' 4之前不支持关联数组,所以你的第一个例子实际上被视为一个常规数组。解析器能够处理简单的字符串,它需要一个整数值,并将它们全部视为值0.您可以使用许多不同的字符串对“hash”进行索引,并且“$ {hash [key]}”仍然会扩展为“ Ashwin'。 – chepner 2013-04-23 20:12:44

回答

9

如果先赋值之前使用declare -A hash,然后按预期运行该脚本。

使用bash 4.2.25

+0

这是不正确的,至少在bash 3.2 – anubhava 2013-04-23 19:01:52

+0

是的@anubhava说它不能在bash 3.2上工作。 – Bajji 2013-04-23 19:05:05