2014-02-21 91 views
1

我有一个运行变量,假设当前迭代的值为INDEX = 1122。我已出口:Bash:如何引用其名称中包含另一个变量的变量?

export PRO"$INDEX"=/some/fancy/dirry

现在我要引用这个变量,但如果我这样做:

echo $"PRO$INDEX"

我得到:

PRO1122

相反,我想看到:

/some/fancy/dirry

很像echo $PRO1122的结果。

但是,我当然不能硬编码循环中的值1122

回答

6

BASH已经有一个可变的参考机制。

你可以这样做:

v="PRO$INDEX" 
echo "${!v}" 
/some/fancy/dirry 
3

使用eval

eval echo '$PRO'$INDEX 

但好像你应该使用一个数组,而不是嵌入索引的变量名。

+0

'eval'应仅用于壳(像POSIX'sh',这也没啥阵列支持)不支持某种形式的间接参数扩展。 – chepner

相关问题