값이 변수인 bash 연관 배열, 각 값에 대한 변수 이름 인쇄

값이 변수인 bash 연관 배열, 각 값에 대한 변수 이름 인쇄

다음과 같은 연관 배열이 있습니다.

var1="dog"
var2="cat"
var3="moose"

declare -A asar01=(
["one"]="$var1"
["two"]="$var2"
["three"]="$var3"
)

각 값 변수 이름을 반복하여 인쇄하고 싶습니다. 따라서 "var1", "var2" 및 "var3"만 인쇄됩니다. 어떻게 해야 하나요? 다음을 시도했지만 실제 스크립트 이름이 인쇄됩니다. 첫 번째 변수로 출력합니다.

for i in "${!asar01[@]}";do
    echo "${!asar01[$i]}"
done

내 예제에서는 해당 ${!variable}방법을 사용하여 이름을 인쇄하려고 시도했지만 작동하지 않습니다. 어떻게 해야 하나요?

답변1

당신은 사용하려고간접 확장뒤로. 변수 이름을 유지하려면 $연관 배열 할당에서 제거하십시오.

#!/bin/bash

var1="dog"
var2="cat"
var3="moose"

declare -A asar01=(
["one"]="var1"
["two"]="var2"
["three"]="var3"
)

for i in "${!asar01[@]}"; do
   printf 'Key is: %s\n' "$i"
   printf 'Var name is: %s\n' "${asar01[$i]}"
   printf 'Var value is: %s\n' "${!asar01[$i]}"
done

관련 정보