about_For
简短说明
介绍可用来基于条件测试运行语句的语言命令。
长说明
For
语句(也称为 For
循环)是一种用于创建循环的语言构造,该循环在指定条件的计算结果为 $true
时运行命令块中的命令。
For
循环的典型用法是循环访问值数组,并对这些值的子集进行操作。 在大多数情况下,如果要循环访问数组中的所有值,请考虑使用 Foreach
语句。
语法
以下内容介绍 For
语句的语法。
for (<Init>; <Condition>; <Repeat>)
{
<Statement list>
}
Init 占位符表示在循环开始前运行的一个或多个命令。 通常使用语句的 Init 部分来创建和初始化具有起始值的变量。
此变量随后将是 For
语句下一部分中要测试的条件的基础。
Condition 占位符表示解析为 $true
或 $false
布尔值的 For
语句部分。 每次运行 For
循环时,PowerShell 都会对条件进行计算。 如果语句为 $true
,则会运行命令块中的命令,并再次对该语句进行计算。 如果条件仍为 $true
,则语句列表中的命令将再次运行。
此循环会重复运行,直到条件变为 $false
。
Repeat 占位符表示每次重复运行循环时执行的一个或多个命令(用逗号分隔)。 通常,此占位符用于修改在语句的 Condition 部分测试的变量。
Statement list 占位符表示每次进入循环或重复运行循环时运行的一组命令(一个或多个命令)。 Statement list 的内容用大括号括起来。
支持多个操作
Init 语句中的多个赋值操作支持以下语法:
# Comma separated assignment expressions enclosed in parentheses.
for (($i = 0), ($j = 0); $i -lt 10; $i++)
{
"`$i:$i"
"`$j:$j"
}
# Sub-expression using the semicolon to separate statements.
for ($($i = 0;$j = 0); $i -lt 10; $i++)
{
"`$i:$i"
"`$j:$j"
}
Repeat 语句中的多个赋值操作支持以下语法:
# Comma separated assignment expressions.
for (($i = 0), ($j = 0); $i -lt 10; $i++, $j++)
{
"`$i:$i"
"`$j:$j"
}
# Comma separated assignment expressions enclosed in parentheses.
for (($i = 0), ($j = 0); $i -lt 10; ($i++), ($j++))
{
"`$i:$i"
"`$j:$j"
}
# Sub-expression using the semicolon to separate statements.
for ($($i = 0;$j = 0); $i -lt 10; $($i++;$j++))
{
"`$i:$i"
"`$j:$j"
}
注意
除前递增或后递增以外的操作可能不适用于所有语法。
对于多个 Conditions,请使用逻辑运算符,如下例所示。
for (($i = 0), ($j = 0); $i -lt 10 -and $j -lt 10; $i++,$j++)
{
"`$i:$i"
"`$j:$j"
}
有关详细信息,请参阅 about_Logical_Operators。
示例
For
语句要求至少用括号将语句的 Init、Condition 和 Repeat 部分括起来,并在语句的 Statement list 部分将命令用大括号括起来。
请注意,接下来的示例有意显示 For
语句之外的代码。 在后面的示例中,代码集成到 For
语句中。
例如,以下 For
语句持续显示 $i
变量的值,直到你按 Ctrl+C 手动中断命令。
$i = 1
for (;;)
{
Write-Host $i
}
可向 Statement list 添加其他命令,使得每次运行循环时 $i
的值都递增 1,如下例所示。
for (;;)
{
$i++; Write-Host $i
}
此语句将持续显示 $i
变量的值,直到你按 Ctrl+C 中断命令为止,因为每次运行循环时该变量的值都会递增 1。
可使用 For
语句的 Repeat 部分,而不必更改 For
语句的 Statement list 部分的变量值,如下所示。
$i=1
for (;;$i++)
{
Write-Host $i
}
此语句仍将无限期重复,直到你按 Ctrl+C 中断命令。
可使用一个条件来终止 For
循环。 可使用 For
语句的 Condition 部分放置条件。 当条件的计算结果为 $false
时,For
循环会终止。
在下例中,For
循环将在 $i
的值小于或等于 10 时运行。
$i=1
for(;$i -le 10;$i++)
{
Write-Host $i
}
可使用 For
语句的 Init 部分在 For
循环中执行此任务,而不是在 For
语句外部创建和初始化变量。
for($i=1; $i -le 10; $i++){Write-Host $i}
可使用回车符而不是分号来分隔 For
语句的 Init、Condition 和 Repeat 部分。 以下示例演示了使用此替代语法的 For
。
for ($i = 0
$i -lt 10
$i++){
$i
}
For
语句的这种替代形式适用于 PowerShell 脚本文件和 PowerShell 命令提示符。 但是,在命令提示符处输入交互式命令时,使用带分号的 For
语句语法会更容易。
For
循环比 Foreach
循环更灵活,因为它允许使用模式来递增数组或集合中的值。 在下例中,$i
变量在 For
语句的 Repeat 部分递增 2。
for ($i = 0; $i -le 20; $i += 2)
{
Write-Host $i
}
For
循环也可写在一行上,如下例所示。
for ($i = 0; $i -lt 10; $i++) { Write-Host $i }
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈