在dash中打印具有迭代次数索引的变量

时间:2017-03-27 16:35:39

标签: sh dash-shell

我在破折号中工作,我想知道是否有任何方法可以使用迭代次数索引打印变量。

代码:

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

谢谢!

2 个答案:

答案 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 ]以下enter image description here