在bash中迭代数组时获取变量名

时间:2018-05-11 14:55:42

标签: linux bash

我所拥有的是一个包含一些变量的数组。我可以迭代来获取那些变量的值,但我需要的实际上是它们的名称(值将在其他地方使用)。

与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

1 个答案:

答案 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?

相关问题