Bash:如何引用其名称中包含另一个变量的变量?
问题描述:
我有一个运行变量,假设当前迭代的值为INDEX = 1122
。我已出口:Bash:如何引用其名称中包含另一个变量的变量?
export PRO"$INDEX"=/some/fancy/dirry
现在我要引用这个变量,但如果我这样做:
echo $"PRO$INDEX"
我得到:
PRO1122
相反,我想看到:
/some/fancy/dirry
很像echo $PRO1122
的结果。
但是,我当然不能硬编码循环中的值1122
。
答
BASH已经有一个可变的参考机制。
你可以这样做:
v="PRO$INDEX"
echo "${!v}"
/some/fancy/dirry
答
使用eval
:
eval echo '$PRO'$INDEX
但好像你应该使用一个数组,而不是嵌入索引的变量名。
'eval'应仅用于壳(像POSIX'sh',这也没啥阵列支持)不支持某种形式的间接参数扩展。 – chepner