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

Однако меня поразило то, что мне нужно использовать переменные, перечисленные по номеру (в зависимости от того, чему равен $NumberOfVM. Я также хочу обнулить число до четырех 0. Я знаю, что могу обнулить, выполнив $(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

и, хотя я верю (я могу ошибаться), что написано, %ram0001, пишется - я не могу понять, как использовать его динамически при использовании переменной как$percentram$(printf %04g $NumberOfVMs) не будет равно percentram0001 но скорее равный выход percentram с добавленным к нему 0001.

Пожалуйста, если бы вы могли помочь мне, я буду любить тебя вечно.

1 ответ

Вы можете использовать eval hack:

NumberOfVMs=10
read -p "Enter percentage of RAM to allot GuestOS (1-99): " count
eval "percent$(printf %04g $NumberOfVMs)=$count"
echo $percent0010
Другие вопросы по тегам