我有变量$foo="something"
,想使用:
bar="foo"; echo $($bar)
得到"东西"的回响。
在 bash 中,您可以使用 ${!variable}
来使用变量。
foo="something"
bar="foo"
echo "${!bar}"
# something
接受的答案很棒。 但是,@Edison询问如何对数组执行相同的操作。 诀窍是您希望您的变量包含"[@]",以便使用"!"扩展数组。查看此函数以转储变量:
$ function dump_variables() {
for var in "$@"; do
echo "$var=${!var}"
done
}
$ STRING="Hello World"
$ ARRAY=("ab" "cd")
$ dump_variables STRING ARRAY ARRAY[@]
这输出:
STRING=Hello World
ARRAY=ab
ARRAY[@]=ab cd
当给出只是ARRAY
时,第一个元素显示为!
扩展的内容。 通过提供ARRAY[@]
格式,您可以扩展数组及其所有值。
eval echo "$$bar"
会这样做。
为了更清楚地了解如何使用数组
:arr=( 'a' 'b' 'c' )
# construct a var assigning the string representation
# of the variable (array) as its value:
var=arr[@]
echo "${!var}"