【发布时间】:2014-02-21 15:18:01
【问题描述】:
我有一个运行变量,假设当前迭代的值为INDEX = 1122。我已经导出:
export PRO"$INDEX"=/some/fancy/dirry
现在我想引用这个变量,但如果我这样做:
echo $"PRO$INDEX"
我明白了:
PRO1122
相反,我想看看:
/some/fancy/dirry
很像echo $PRO1122 的结果。
但是,我当然不能在循环中硬编码值 1122。
【问题讨论】:
我有一个运行变量,假设当前迭代的值为INDEX = 1122。我已经导出:
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 只能用于不支持某种形式的间接参数扩展的 shell(如 POSIX sh,它也缺乏数组支持)。