构造关联数组时出错

构造关联数组时出错

我正在尝试在 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

如果您想要一个关联数组,则必须使用bash4 并使用它所需的语法。您显示的代码将简单地将三个字符串分配给索引数组(如果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

祝你好运!

相关内容