我所拥有的是一个包含一些变量的数组。我可以迭代来获取那些变量的值,但我需要的实际上是它们的名称(值将在其他地方使用)。
与var [i]一起工作,因为我会有不同的名字。我想我可以通过创建另一个带有名称的数组来解决这个问题 - 类似于: Getting variable values from variable names listed in array in Bash
但我想知道是否有更好的方法来做到这一点。
var1=$'1'
var2=$'2'
var3=$'3'
Array=( $var1 $var2 $var3)
for ((i=0; i<${#Array[@]}; i++))
do
echo ${Array[i]}
done
是:
>1
>2
>3
应该是:
>var1
>var2
>var3
答案 0 :(得分:1)
这个解决方案怎么样?
#!/bin/bash
var1=$'1'
var2=$'2'
var3=$'3'
Array=( var1 var2 var3 )
for var in "${Array[@]}"; do
echo "$var = ${!var}"
done
这个想法只是将变量名称放在数组中,然后依赖于Bash的indirection功能。
但正如@CharlesDuffy所指出的,关联数组的使用听起来更适合OP的使用案例。
此外,这篇相关文章可能值得一读:How can I use variable variables… or associative arrays?