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}
方法列印名稱,但它不起作用。我怎樣才能做到這一點?
您正在嘗試向後使用間接擴展。如果要保留變數名稱,
$
請從關聯數組分配中刪除#!/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