当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

作者:精品下载站 日期:2024-12-14 04:53:17 浏览:13 分类:玩电脑

PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?


[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

PowerShell do while 简介

PowerShell 中的 do-While 循环是迭代循环(for、foreach、while、do-while)之一,它根据提供的条件多次运行块内的内容,运行直到条件为真,并在满足条件时终止。条件变为假时,它还确保循环至少执行一次,并且该循环与 Do-Until 循环相反,Do-Until 循环运行直到条件为真,并在条件变为假时停止。大多数时候,条件是用条件运算符检查的。

语法

Do-While 循环语法

do {
Statement 1
Statement 2
............
............
Statement N
} while (condition)
Do-Until loop syntax
do {
Statement 1
Statement 2
............
............
Statement N
} until (condition)

流程图

Do-While 循环的流程图。

do-while 循环在 PowerShell 中如何工作?

Do-While 循环通过第一次进入循环来确保循环至少执行一次,然后检查条件,如果条件为 True 则进入循环,反之亦然。 例如,

do {
Write-Output "`nThis loop is Guaranteed to execute the first time"
} while ($false)

输出:

[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

如果您看到上面的输出,则即使条件为 false,循环也会执行,因为按照其设计,它首先进入循环,然后在下一次运行时检查 While 条件,直到它变为 false。

如果我们在条件中使用 $true ,循环将变得无限并且永远不会终止,因为条件永远不会变为 false。

相反,相反的循环 do-until 会执行,直到条件成立。例如,

do {
Write-Output "`nUntil is Guaranteed to execute first time"
} until ($true)

输出:

[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

如果我们在这里使用 $false 条件,则循环将永远不会退出,因为 while 内的条件永远不会变为 false。

While、Do-While 循环和 Do-Until 循环之间的区别。

While循环:

$a = 100
While ($a -gt 110) {
$a++
Write-Output "This won't be printed"
}

在上面的 while 循环示例中,不会打印输出

Do-While 循环:

$a = 100
do {
$a++
Write-Host "`nThis line will be printed once only" -BackgroundColor DarkGreen
} while ($a -gt 110)

输出:

[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

在上面的示例中,由于条件变为 false,输出将仅打印一次。

Do-Until 循环:

$a = 100
do {
$a++
Write-Host "`nThis line will be printed 10 times" -BackgroundColor DarkGreen
} until ($a -gt 110)

输出:

[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

示例

以下是下面提到的示例

示例 #1 - 简单的 Do-While 循环。

$i = 0
do {
$i
$i++
} while ($i -lt 5)

输出:

[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

在上面的示例中,$i 变量初始化为 0,并且在 do-while 循环内,每次迭代该值都会增加 1,当 $i 值达到 5 时循环终止。

示例 #2 - 具有多个条件的 Do-While 循环。

$i = 0
$j = 0
do {
Write-Output "i = $i, j= $j"
$i++
$j = $j + 2
} While(($i -lt 5) -and ($j -lt 15))

输出:

[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

在上面的示例中,如果任何条件变为 false,则循环终止。

请参阅具有多个条件的另一个示例。

$i = 0
$j = 0
do {
Write-Output "i = $i, j= $j"
$i++
$j = $j + 2
} While(($i -lt 5) -or ($j -lt 15))

输出:

[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

在上面的示例中,如果两个条件都变为 false,则循环终止,并且对于任何单个 true 条件,它都会进入循环。

示例 #3 - 使用数组进行 Do-While 循环。

我们可以使用 Do-While 循环遍历每个数组项。在下面的例子中,

$animals = @("Cow","Dog","Cat","Elephant")
$i = 0
do{
$animals[$i]
$i++
}while($i -lt $animals.Length)

输出:

[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

在此示例中,会打印 Animals 数组下的每个项目,因为 $i 值从 0 开始,一直持续到 Animal 数组的长度。

示例 #4 - 带 Break 的 Do-While 循环

我们可以使用 Break 语句终止 Do-While 循环。在这个例子中,我们需要如果数组的值满足特定值,则循环应该终止。下面显示了一个示例。

$i = 0
do {
$i
$i = $i + 2
if($i -eq 10){ break }
} while ($i -lt 20)

输出:

[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

当$i的值变为10时,do-while循环自动终止。

示例#5 - 使用Continue 进行Do-While 循环

要跳过特定迭代,请使用Continue 关键字。我们可以将Continue关键字与Do-While循环一起使用,如下所示。

$i = 0
do{
if($i -eq 10) {
$i = $i + 2
Continue
}
$i
$i = $i + 2
}while($i -lt 20)

输出:

[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

在上面的示例中,当 $i 值变为 10 时,接下来在该迭代期间将跳过所有命令,因此此处不显示输出 10。

示例 #6 - 带用户输入提示的 Do-While 循环。

有时我们需要来自用户的输入值,并且我们需要继续直到用户输入正确的输入。您可以使用 Do-While 循环来实现这一点。例如,

$choice = ""
do{
Write-Output "*********************************"
Write-Output "`tPress 'R' to Restart VM"
Write-Output "`tPress 'S' to Shutdown VM"
Write-Output "*********************************"
$choice = Read-Host 'Enter Choice '
switch($choice){
'r'  { "Reboot selected"}
's' {"Shutdown selected"}
}
}while(($choice -ne 'r') -and ($choice -ne 's'))

上面的脚本将提示用户输入并继续,直到 $choice 值不再变为“R”或“S”。

输出:

[玩转系统] PowerShell 执行 while |了解 do-while 循环在 PowerShell 中如何工作?

结论

与任何其他循环函数(For、Foreach、While)一样,Do-While 循环在 PowerShell 或各种脚本语言中也非常有用。您可以将此循环用于各种需要循环至少需要执行一次并稍后检查条件的程序。例如,您可以在服务器重新启动后在此循环内使用 Test-WSMan 命令来检查 WINRM 连接是否已建立。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯