Powershell - 或多次检查
问题描述:
我有以下脚本导致问题。它正在做一个简单的检查,看看输入的字符数是7还是8.然而,即使在输入7或8个字符后,它也不会移到else语句上并显示“无效字符数”。Powershell - 或多次检查
如果我删除-or并坚持只是一个检查,那么它工作正常。在使用-or操作符进行检查时,似乎无法使其工作。我发现的所有例子似乎都暗示代码应该正常工作,所以任何人都可以发现我错过的东西吗?
Function number {
$global:change = read-host "Enter a number"
if ($global:change.length -ne 7 -or $global:change.length -ne 8) {
write-host $global:change.length
write-host -foregroundcolor red "Invalid number of characters"
number
}
else {
write-host "You entered the correct amount of characters"
}
}
number
答
你只需要翻转你的逻辑有点得到这个工作。根据您的代码中的逻辑,其中一种情况将始终为真。如果您将代码更改为以下内容,您将获得所需的效果。
Function number {
$global:change = read-host "Enter a number"
if (($global:change.length -eq 7) -or ($global:change.length -eq 8))
{
write-host "You entered the correct amount of characters"
}
else
{
write-host $global:change.length
write-host -foregroundcolor red "Invalid number of characters"
number
}
}
number
这将测试您输入的值是7还是8,如果输入了其他值,则循环。
答
变化,在这样的-and或风格的代码-or:
Function number {
$global:change = read-host "Enter a number"
if ($global:change.length -eq 7 -or $global:change.length -eq 8) {
write-host "You entered the correct amount of characters"
}
else {
write-host $global:change.length
write-host -foregroundcolor red "Invalid number of characters"
number
}
}
number
+1
这些条件需要单独进行评估,然后才能使用-or进行测试。看到布拉登回答 – Matt 2014-08-28 11:20:12
打败我吧。这些条件需要单独进行评估,并用方括号表达式进行评估,然后才能用 - 或 - 进行测试。 – Matt 2014-08-28 11:20:46
伟大的东西,这工作得很好。谢谢。 – Saf 2014-08-28 11:36:53