Оболочки Windows вложенных циклов for
Я хотел запустить программу несколько раз с двумя увеличивающимися входными параметрами. Для этого мне пришлось написать небольшой шелл-скрипт, содержащий два вложенных цикла for. По какой-то причине, которую я не понял, скрипт останавливает свое выполнение перед печатью всех значений.
for /l %%r in (1 2 3 4 5 6 7 8 9 10) do (
for /l %%c in (1 2 3 4 5 6 7 8 9 10) do (
rem Run my program here!
echo %%r %%c
)
)
Выход равен
1 1
1 3
3 1
3 3
Я действительно теряюсь, так как я не эксперт в программировании оболочки windows.
1 ответ:
Вы добавили флаг /l, который имеет следующие свойства:
for /l %%X in (start, step, end) do command
Итак, в вашем случае:
Start: 1 Step : 2 End : 3
Так вот почему вы получаете:
(1, 1), (1,3), (3,1), (3,3)
Если вы удалите /l, вы должны получить ожидаемые результаты.
echo off for %%r in (1 2 3 4 5 6 7 8 9 10) do ( for %%c in (1 2 3 4 5 6 7 8 9 10) do ( echo %%r %%c ) )
Который возвращает (1,1) к (10,10).
Вы можете найти дополнительную информацию здесь