我有以下脚本导致问题。它正在进行一个简单的检查,看看输入的字符数是7还是8。但是,即使输入7或8个字符,它也不会移动到else语句并显示“无效的字符数”。
如果我删除-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
答案 0 :(得分:1)
你只需要稍微翻转一下你的逻辑就可以了。根据代码中的逻辑,其中一个案例将永远为真。如果您将代码更改为以下内容,您将获得所需的效果。
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,如果输入了其他值则循环。
答案 1 :(得分:0)
在-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