Do-While循环至少执行一次,因先执行语句块再判断条件;While循环先判断条件,可能零次执行。语法上Do-While为do{...}while(条件),末尾需圆括号且不可省略大括号。PowerShell 中的 `Do-While` 循环天然具备“至少执行一次”的特性,因为它先运行语句块,再检查条件。这和 `While` 循环(先判断、再执行)有本质区别。
Do-While 的基本结构
语法固定为:
do { <语句列表> } while (<条件>)
注意:条件写在末尾,且必须用圆括号包裹,大括号不可省略。
为什么它一定执行至少一次
执行顺序是:先执行大括号内的代码 → 再计算 while 后的条件 → 如果条件为 $true,就回到开头重复;如果为 $false,就退出。
- 哪怕一开始条件就是
$false,语句块也已经跑过一遍了 - 不像
while ($false) { ... }那样,整个块直接跳过
典型使用场景示例
比如等待用户输入有效值,或处理数组直到遇到特定元素:
- 等待用户确认继续:
do { $input = Read-Host "输入 'yes' 继续,其他退出"; } while ($input -eq "yes") - 遍历数组直到遇到 0(即使第一个数就是 0,也会进一次循环):
$arr = 0, 2, 3; $i = 0; do { Write-Host $arr[$i]; $i++ } while ($i -lt $arr.Count -and $arr[$i-1] -ne 0)
常见错误提醒
容易出错的地方:
- 忘记写
do关键字,只写{...} while(...)→ 会报语法错误 - 条件中变量未初始化或逻辑反了(例如该用
-ne却用了-eq),导致无限循环 - 在循环内没更新条件相关变量(如没改
$i或没读新输入),造成死循环


















