2013-04-23 57 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