Erro ao construir um array associativo

1

Estou tentando construir um array associativo no bash

#!/bin/bash
declare -A hero_escore

    hero_escore=( "Invoker_Anti-Mage : -44"
    "Tinker_Nyx Assassin : 32"
    "Troll Warlord_Drow Ranger : 3" )

Estas são 3 linhas diferentes. Pretende ser assim apenas. Mas o código acima dá um erro para cada linha - Troll Warlord_Drow Ranger : 3: must use subscript when assigning associative array . É porque espera que eu use algo assim - [Invoker_Anti-Mage]="-44" ? Se assim for, de qualquer forma eu posso fazer o trabalho da maneira que eu usei no meu programa usando bash 3 ou algo assim? Eu quero construir um array associativo com o formato que eu dei. É possível?

    
por Ashwin 22.04.2014 / 20:31

2 respostas

3

Se você quiser um array associativo, você terá que usar bash 4 e usar a sintaxe esperada. O código que você mostra simplesmente designaria três strings para um array indexado (se here_escore não tivesse sido declarado como um array associativo).

    
por 22.04.2014 / 20:34
0

Acho que essa solução deve funcionar para você no 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

Também achei essa postagem muito útil: link

Boa sorte!

    
por 05.11.2015 / 21:46

Tags