Bash:如何引用名称中包含另一个变量的变量?
我有一个正在运行的变量,假设当前迭代的值是Bash:如何引用名称中包含另一个变量的变量?,bash,variables,syntax,Bash,Variables,Syntax,我有一个正在运行的变量,假设当前迭代的值是INDEX=1122。我已出口: export-PRO“$INDEX”=/some/fancy/dirry 现在我想引用这个变量,但如果我这样做: echo$“PRO$索引” 我得到: PRO1122 相反,我希望看到: /some/fancy/dirry 与echo$PRO1122的结果非常相似 但是,我当然不能硬编码循环中的值1122。使用eval: eval echo '$PRO'$INDEX 但似乎您应该使用数组,而不是将索引嵌入变量名中。使用
INDEX=1122
。我已出口:
export-PRO“$INDEX”=/some/fancy/dirry
现在我想引用这个变量,但如果我这样做:
echo$“PRO$索引”
我得到:
PRO1122
相反,我希望看到:
/some/fancy/dirry
与echo$PRO1122的结果非常相似
但是,我当然不能硬编码循环中的值1122
。使用eval
:
eval echo '$PRO'$INDEX
但似乎您应该使用数组,而不是将索引嵌入变量名中。使用eval
:
eval echo '$PRO'$INDEX
但是看起来您应该使用数组,而不是将索引嵌入变量名中。BASH已经有了变量引用机制 你可以做:
v="PRO$INDEX"
echo "${!v}"
/some/fancy/dirry
BASH已经有了一个变量引用机制 你可以做:
v="PRO$INDEX"
echo "${!v}"
/some/fancy/dirry
eval
应仅用于不支持某种形式间接参数扩展的shell(如POSIXsh
,它也缺乏数组支持)。eval
应仅用于不支持某种形式间接参数扩展的shell(如POSIXsh
,它也缺乏数组支持)。