0

我有一个这样的shell脚本,

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

并且输出应该是foxyserver

我试过这个,

echo $foxy$H

这给了我

1

然后我用

str="foxy$H"
echo $str

输出是

foxy1

我怎么能那样做?

4

2 回答 2

6

使用间接变量,如 BashFAQ #6 中所述

$ foxy1="foxyserver"
$ H="1"
$ varname="foxy$H"
$ echo "${!varname}"
foxyserver
于 2013-05-31T03:25:41.037 回答
2

使用 eval,你可以做间接:

eval echo \$$str

输出

foxyserver

警告:这不是很好的做法。例如,如果你有,str=(rm -rf ~/*)那么 eval 表达式将是$(rm -rf ~/*). 因此,请注意并按照 Charles Duffy 的建议使用间接方式。

于 2013-05-31T03:24:13.690 回答