首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PowerShell比较麻烦,不能进行复合比较

PowerShell比较麻烦,不能进行复合比较
EN

Stack Overflow用户
提问于 2019-10-17 05:44:39
回答 2查看 48关注 0票数 2

我在进行复合比较时遇到了问题。我还没有成功地使用过-ne或-or。下面是我认为它应该如何工作:

代码语言:javascript
运行
复制
If (($Var -ne 'Y') -or ($Var -ne 'N') {
     #Logic for error message and loop back to user promt
Else { #Go to another function }

现在,当我尝试这样做时,无论我放入什么,我都会转到我的错误消息,由于循环返回到用户提示,所以它只会进行无限循环。即使我输入Y或N,我也会看到错误消息。

现在我已经将这段代码分解成下面的代码,这是可行的,但我更愿意做一个复合比较,如果变量既不是"y“也不是"n",则转到error (这是因为输入Y和N都会使脚本前进到代码的同一部分)。

代码语言:javascript
运行
复制
If ($Var -eq 'Y') {
     #Do action 1
}
ElseIf ($Var -eq 'N') {
     #Do action 1
}
Else {
     #Give error message and loop back to prompt
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-17 05:56:19

代码语言:javascript
运行
复制
If (($Var -ne 'Y') -or ($Var -ne 'N')) {
     #Logic for error message and loop back to user promt
Else { #Go to another function }

这永远不会起作用,因为这两种情况中的一种总是正确的,并且您正在使用-or。从字面上讲,解决这个问题的方法有一百万种,但考虑到您已经展示的内容并推断出您给出了一个多步骤的过程,以下是我要做的:

代码语言:javascript
运行
复制
$step1complete = $false
Write-Host "Some question"
do {
  $var = Read-Host -Prompt "Enter Y or N"
  if ($var -in @('Y','N')) {
    $step1complete = $true
  }
  else {
    Write-Host "Invalid option!"
  }
} until ($step1complete)
票数 3
EN

Stack Overflow用户

发布于 2019-10-17 05:50:41

代码语言:javascript
运行
复制
    If (($Var -ne 'Y') -or ($Var -ne 'N')) {

这将永远是正确的。我认为你想在这里做一个"-and“。

如果你尝试这样做:

代码语言:javascript
运行
复制
$Var = "1"
If (($Var -ne 'Y') -and ($Var -ne 'N')) {
     #Logic for error message and loop back to user promt
      "ne Y or ne N"
     }
Else { #Go to another function 
 "else"
}

它应该打印否则“

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58422068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档