如何将字符串与变量连接到Bash中的新变量?

时间:2013-05-31 03:18:51

标签: bash shell

我有一个像这样的shell脚本,

#!/bin/bash
foxy1="foxyserver"
H="1"

,输出应为 foxyserver

我试过了,

echo $foxy$H

这给了我

1

然后我用

str="foxy$H"
echo $str

输出

foxy1

我怎么能这样做?

2 个答案:

答案 0 :(得分:5)

使用indirect variables, as described in BashFAQ #6

$ foxy1="foxyserver"
$ H="1"
$ varname="foxy$H"
$ echo "${!varname}"
foxyserver

答案 1 :(得分:2)

使用eval,你可以做间接:

eval echo \$$str

输出

foxyserver

警告:这不是一个很好的做法。例如,如果您有str=(rm -rf ~/*),那么eval表达式将为$(rm -rf ~/*)。所以要警告并使用Charles Duffy所建议的间接方式。

相关问题