Я просто должен создать возрастающее имя var в цикле. Переменная должна использовать "на имя var количество цикла".
Пример в цикле:
# on Cycle=1
MyVar$Cycle=Exec$Cycle # (equal to MyVar1=Exec1)
# on Cycle=2
MyVar$Cycle=Exec$Cycle # (equal to MyVar2=Exec2)
# etc...
Таким образом, как я могу правильно определить имя var?
В пакетной обработке работ легко:
set MyVar%Cycle%=Exec%Cycle% ...
Но я не знаю, как заставить его произойти в Bash.
Конечно, связь как это MyVar$Cycle=Exec$Cycle
не работать.
Просто потребность смочь установить тот возрастающий varname, таким образом, я могу дать им значения, мне, возможно, понадобится время ко времени. Для меня сценарий работает вся польза, но набор нового имени var в режиме реального времени не делает.
Один возможный способ решить эту задачу состоит в том, чтобы использовать команду eval
способом как это:
#!/bin/bash
for i in {1..5}
do
eval "var$i"="$i"
done
# Output the result
for i in {1..5}
do
echo -n "\$var$i : "
eval echo "\$var$i"
done
Демонстрационный вывод:
$ ./cycle.sh
$var1 : 1
$var2 : 2
$var3 : 3
$var4 : 4
$var5 : 5
Однако я думаю, что лучше адаптировать Ваш документ на получение к работам с массивами для предотвращения такого волшебства:
#!/bin/bash
for i in {1..5}
do
array["$i"]="$i"
done
# Output the result
for i in {1..5}
do
echo "\$array[$i]" : "${array[$i]}"
done
Демонстрационный вывод:
$ ./cycle.sh
$array[1] : 1
$array[2] : 2
$array[3] : 3
$array[4] : 4
$array[5] : 5
[0]
, нет [1]
.