介紹如何在 PowerShell 中使用 For
迴圈處理重複性的工作。
For
迴圈
For
迴圈主要用於處理重複次數是固定的問題,也就是在執行迴圈之前,就已經事先知道要迭代幾次的情況,其語法如下。
For (<計數器啟始>; <條件式>; <計數器增量>) { <程式碼區塊> }
迴圈在執行值時會先執行一次計數器啟始
後,判斷條件式
是否成立,若成立則執行程式碼區塊
,接著執行計數器增量
後再次判斷條件式
是否成立,若成立則繼續重複執行程式碼區塊
,如此反覆執行直到條件式
不成立時才跳出迴圈。
例如若要利用 For
迴圈列印從 1
到 5
的數值,就可以這樣寫:
# $i 從 1 跑到 5 For ($i = 1; $i -le 5; $i++) { # 列出 $i 的數值 $i }
1 2 3 4 5
這裡的 For
迴圈一開始設定 $i
從 1
開始執行,條件設定為 $i
小於或等於 5
($i -le 5
),每執行完一次程式碼區塊就讓 $i
遞增 1
($i++
),整個迴圈的效果就是列印從 1
到 5
的數值。
跳過當次疊代
在迴圈執行到一半時,如果想要跳過當次的迭代,可以使用 Continue
,例如若想要讓迴圈在執行時,跳過偶數的的 $i
,就可以這樣寫:
For ($i = 1; $i -le 5; $i++) { # 跳過偶數的 $i If ($i % 2 -eq 0) { Continue } $i }
1 3 5
這裡我們在迴圈的程式碼區塊插入一條判斷式,檢查 $i
是否為偶數,若 $i
為偶數則執行 Continue
跳過當次的迭代(不執行下方輸出 $i
的部分)。
離開迴圈
如果想要讓迴圈執行到一半時直接中斷、跳出迴圈,可以使用 Break
,例如若想要讓迴圈在 $i
在大於 3
的時候就直接跳出,可以這樣寫:
For ($i = 1; $i -le 5; $i++) { # 若 $i 大於 3 則跳出迴圈 If ($i -gt 3) { Break } $i }
1 2 3
這裡我們在迴圈的程式碼區塊插入一條判斷式,檢查 $i
是否大於 3
,若條件成立則執行 Break
跳出 For
迴圈。
無窮迴圈
當 For
迴圈不設置任何條件時,就是一種無窮迴圈,這種情況通常會搭配 Break
使用。列印出 1
到 5
也可以這樣寫:
$i = 1 For (;;) { If ($i -gt 5) { Break } $i # 輸出 $i $i++ # 遞增 $i }
1 2 3 4 5
迴圈標籤
在巢狀結構的多層迴圈,Continue
與 Break
可以搭配標籤的方式來指定要作用的迴圈是哪一個,迴圈的標籤要放在迴圈之前,以冒號開頭,並加上標籤名稱,例如 :MyLoopName
,而在呼叫 Continue
與 Break
的時候就可以用標籤名稱指定要作用的迴圈是哪一個,以下是一個簡單的範例:
# 設定迴圈標籤 :MyLoopName For ($i = 1; $i -le 5; $i++) { For ($j = 1; $j -le 5; $j++) { if ($i + $j -gt 3) { # 跳出指定標籤的迴圈 Break MyLoopName } echo "i = $i, j = $j" } }
i = 1, j = 1 i = 1, j = 2
參考資料:Adam the Automator、微軟官方文件