当用户按下" n"而循环不会终止

时间:2016-08-08 13:01:08

标签: powershell while-loop

我尝试使用while循环创建菜单。我希望菜单运行直到用户按下" n"或" N"。

$MenuChoice

while ($MenuChoice -ne "n" -or $MenuChoice -ne "N") {
    Write-Host "Run again? y/n "
    Read-Host $MenuChoice
}

问题在于,无论我按下" N"或" Y"。

我是否需要为$MenuChoice声明一个值?

2 个答案:

答案 0 :(得分:2)

您需要将Read-Host的输出分配到$MenuChoice

# Initial value (in case this is run more than once)
$MenuChoice = $null
# This comparison is not case-sensitive
while ($MenuChoice -ne 'n') { $MenuChoice = Read-Host 'Run again? [y/n]' }

答案 1 :(得分:0)

另一个以Chris Dent's answer为基础的替代方案,使用do {} while ()循环:

do { 
    $MenuChoice = Read-Host 'Run again? [y/n]' 
} while ($MenuChoice -ine 'n')

(同样使用-ine明确不区分大小写的比较,即使-ne默认情况下不区分大小写)