2016-02-26 225 views
2

我想用兩個遞增的輸入參數多次運行一個程序。爲此,我必須編寫一個包含兩個嵌套for循環的小型shell腳本。出於某種原因,我沒有理解腳本在打印所有值之前停止執行。Windows 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 

我真的失去了,因爲我在窗戶裏沒有專家shell編程。

回答

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)。

你可以找到更多的信息here

+0

非常感謝您的回答。剛剛複製了上面的代碼。我必須提到,如果必須的話,我只使用shell編程。我會在下週一嘗試你的代碼。 – Aleph0

+0

您的解決方案適用於我。非常感謝。 – Aleph0