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