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 关注
- 423 浏览
添加回答
举报