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などを使用してプログラムで使用した方法で動作させることができますか?私が与えたフォーマットで連想配列を構築したいと思います。出来ますか?
連想配列が必要な場合は、bash
4を使用し、必要な構文を使用する必要があります。表示するコードは、インデックス付き配列に3つの文字列を割り当てるだけです(here_escore
は連想配列として宣言されていませんでした)。
このソリューションはBash4で機能するはずです。
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
幸運を!