連想配列の構成中にエラーが発生しました。

連想配列の構成中にエラーが発生しました。

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を使用し、必要な構文を使用する必要があります。表示されるコードは、単純に3つの文字列をインデックス配列に割り当てます(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

頑張ってください!

関連情報