私はこのようなシェルスクリプトを持っています、
#!/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 の提案に従って間接参照を使用してください。