我在破折号中工作,我想知道是否有任何方法可以使用迭代次数索引打印变量。
代码:
var1="a"
var2="b"
var3="c"
tmp=0
while [ $tmp -lt 4 ]
do
# this is how i imagine it
echo $('var'$tmp) #output should be value of var$tmp
tmp=$((tmp+1))
done
谢谢!
答案 0 :(得分:1)
在POSIX sh中,您需要使用eval
执行间接扩展:
eval "result=\$var$tmp"
请注意,在ksh,bash或其他shell中有更好的方法可以做到这一点;有关跨所有这些shell的间接扩展和间接分配的全面讨论,请参阅BashFAQ #6。
答案 1 :(得分:0)
使用eval
,如下所示
eval "echo \"\$var${tmp}\""
# The \ escapes the $ to make it a literal dollar sign
应该在不使用第三个变量的情况下完成。
注意:编辑时会考虑 @Charles Duffy [ comment ]以下。