Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个这样的shell脚本,
#!/bin/bash foxy1="foxyserver" H="1"
并且输出应该是foxyserver。
我试过这个,
echo $foxy$H
这给了我
1
然后我用
str="foxy$H" echo $str
输出是
foxy1
我怎么能那样做?
使用间接变量,如 BashFAQ #6 中所述:
$ foxy1="foxyserver" $ H="1" $ varname="foxy$H" $ echo "${!varname}" foxyserver
使用 eval,你可以做间接:
eval echo \$$str
输出
foxyserver
警告:这不是很好的做法。例如,如果你有,str=(rm -rf ~/*)那么 eval 表达式将是$(rm -rf ~/*). 因此,请注意并按照 Charles Duffy 的建议使用间接方式。
str=(rm -rf ~/*)
$(rm -rf ~/*)