0

私はこのようなシェルスクリプトを持っています、

#!/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 に答える