ASH使变量名称变为两个变量

时间:2015-02-09 04:51:57

标签: shell ash

所以我创建了一个脚本,允许您输入一个数字,导出它,然后导入它并在循环中使用它。这就是我的意思:

read NumberOfVMs "How many do you want? "
echo $NumberOfVMs > /variables/NumberOfVMs

然后呢;

while [ $NumberOfVMs -gt 0 ];do
    # This is the loop I use to repeat the effects I want. 
    # This method works fine for me.
    NumberOfVMs=$((NumberOfVMs-1))
done

但是,我得到的是我需要使用按编号列出的变量(基于$ NumberOfVMs等于。我还想将数字填零为4个。我知道我可以做零填充$(printf %04g $NumberOfVMs)

例如,我想在提出问题时能够将3个变量(分别在0001,0002和0003中添加到变量名的末尾)。我目前正在这样做

while [ $NumberOfVMs -gt 0 ];do          
    read -p "Enter percentage of RAM to allot GuestOS (1-99): " percentram$(printf %04g $NumberOfVMs)
    NumberOfVMs=$((NumberOfVMs-1))
done

并且,虽然我确实相信(我可能错了),但是,正在编写的是percentram0001 - 我无法弄清楚如何在使用变量时动态使用它 $percentram$(printf %04g $NumberOfVMs)不等于percentram0001,而是等于添加了0001的percentram的输出。

如果你能帮助我,请永远爱你。

1 个答案:

答案 0 :(得分:2)

您可以使用eval hack:

NumberOfVMs=10
read -p "Enter percentage of RAM to allot GuestOS (1-99): " count
eval "percent$(printf %04g $NumberOfVMs)=$count"
echo $percent0010