我正在尝试在 bash 中构造一个关联数组
#!/bin/bash
declare -A hero_escore
hero_escore=( "Invoker_Anti-Mage : -44"
"Tinker_Nyx Assassin : 32"
"Troll Warlord_Drow Ranger : 3" )
这是 3 条不同的线路。它的目的只是那样。但上面的代码每行都会出错 - Troll Warlord_Drow Ranger : 3: must use subscript when assigning associative array
。是因为它期望我使用这样的东西 - 吗[Invoker_Anti-Mage]="-44"
?如果是这样,我是否可以使用 bash 3 或其他东西让它按照我在程序中使用的方式工作?我想用我给定的格式构造一个关联数组。是否可以?
答案1
如果您想要一个关联数组,则必须使用bash
4 并使用它所需的语法。您显示的代码将简单地将三个字符串分配给索引数组(如果here_escore
尚未声明为关联数组)。
答案2
我认为这个解决方案应该适用于 Bash 4:
declare -A hero_escore=( ["Invoker_Anti-Mage"]="-44"
["Tinker_Nyx-Assassin"]="32"
["Troll-Warlord_Drow-Ranger"]="3" )
for hero in ${!hero_escore[@]}; do
echo "$hero : ${hero_escore[$hero]}";
done
我还发现这篇文章非常有帮助:https://stackoverflow.com/questions/1494178/how-to-define-hash-tables-in-bash
祝你好运!