다음과 같은 연관 배열이 있습니다.
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