我有一个像这样的shell脚本,
#!/bin/bash
foxy1="foxyserver"
H="1"
,输出应为 foxyserver 。
我试过了,
echo $foxy$H
这给了我
1
然后我用
str="foxy$H"
echo $str
输出
foxy1
我怎么能这样做?
答案 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所建议的间接方式。