2012-03-06 24 views
2

可能重复:
How to define hash tables in bash?在bash脚本中的Perl哈希等价物?

Perl的哈希相当于在bash? 请让我知道。

以下代码在korn shell中运行得很完美,但是在bash [3.2版本]中没有,在排版时出错。

#!/bin/ksh 
typeset -A newmap 
name="mandar" 
id="111515" 
newmap["name"]=$name 
newmap["id"]=$id 
echo "${newmap["id"]}" 
+0

以下代码是Korn shell程序可以正常使用,但不是在bash [3.2版本],排版出错。 '#!/ bin中/ KSH 排版-A newmap NAME = “mandar” ID = “111515” newmap [ “名称”] = $名称 newmap [ “ID”] = $ ID 回声“$ {newmap [“id”]}“' – 2012-03-06 13:43:26

回答

1

使用declare -A而不是typeset -A如果你使用bash 4或更高。我测试了它,并且它以这种方式正确工作。

或者你可以测试bash和创建别名,所以你可以未修改的(可能)运行脚本的其余部分:

alias typeset=declare 
+0

你的shell版本是什么? – 2012-03-06 13:56:54

+0

@mandy:你是对的,我忘了说这是在Bash 4和更高版本上工作。我的Bash 4.2。 – 2012-03-06 13:59:21