2 回答

TA貢獻1880條經驗 獲得超4個贊
聽起來您想要一個關聯數組。
# to set values over time
declare -A Array=( ) || { echo "ERROR: Need bash 4.0 or newer" >&2; exit 1; }
Array[var1]=1
Array[var2]=2
Array[var3]=3
也可以一次分配:
# or as just one assignment
declare -A Array=( [var1]=1 [var2]=2 [var3]=3 )
無論哪種方式,都可以使用來遍歷鍵"${!Array[@]}",并使用來檢索鍵的值${Array[key]}:
for var in "${!Array[@]}"; do
val="${Array[$var]}"
echo "$var -> $val"
done
...在完成任何一項分配之后,將正確發出:
var1 -> 1
var2 -> 2
var3 -> 3

TA貢獻1890條經驗 獲得超9個贊
那這個解決方案呢?
#!/bin/bash
var1=$'1'
var2=$'2'
var3=$'3'
Array=( var1 var2 var3 )
for var in "${Array[@]}"; do
echo "$var = ${!var}"
done
這個想法只是將您的變量名放入數組中,然后依靠Bash的間接功能。
但正如@CharlesDuffy指出的那樣,關聯數組的使用聽起來更好地適應了OP的用例。
- 2 回答
- 0 關注
- 418 瀏覽
添加回答
舉報