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,如果输入了其他值,则循环。

+0

打败我吧。这些条件需要单独进行评估,并用方括号表达式进行评估,然后才能用 - 或 - 进行测试。 – Matt 2014-08-28 11:20:46

+0

伟大的东西,这工作得很好。谢谢。 – Saf 2014-08-28 11:36:53

变化,在这样的-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