Windows shell 嵌套 for 循环
Windows shell nested for loops
我想 运行 一个程序多次使用两个递增的输入参数。为此,我不得不编写一个 shell 小脚本,其中包含两个嵌套的 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 shell 编程方面的专家。
您已添加 /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
)
)
其中 returns (1,1) 到 (10,10)。
您可以找到更多信息here
我想 运行 一个程序多次使用两个递增的输入参数。为此,我不得不编写一个 shell 小脚本,其中包含两个嵌套的 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 shell 编程方面的专家。
您已添加 /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
)
)
其中 returns (1,1) 到 (10,10)。
您可以找到更多信息here