연관 배열을 구성하는 중 오류가 발생했습니다.

연관 배열을 구성하는 중 오류가 발생했습니다.

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

행운을 빌어요!

관련 정보