【问题标题】:PowerShell Variable Contains Specific NumbersPowerShell 变量包含特定数字
【发布时间】:2015-12-11 16:49:14
【问题描述】:

场景

当我的变量(称为 $Numbers)包含 0、1 2 时,它将运行第一个 IF 语句下的任何内容。如果我的变量包含 0、1、2 3,它将运行另一个 IF 语句。

问题

我似乎无法让它工作,因为它连续运行第一个 IF 语句(由于仍然包含 0、1 和 2),但如果它不包含数字 3,则永远不会跳过它。

简要代码示例

If ($Numbers -contains "*0,*" -and "*1,*" -and "*2,*") {

    Write-Host = "Does not contain 3"

}

Elseif ($Numbers -contains "*0,*" -and "*1,*" -and "*2,*" -and "*3,*") {

    Write-Host "Contains 3"

}

感谢任何指导。

【问题讨论】:

  • 如果$Numbers 是一个集合,则删除通配符。如果$Numbers 是字符串,请使用match io contains。在这两种情况下,正如 Maarten 所说,颠倒声明。
  • 我真的很想看看 $numbers 是如何填充的或确切的内容。

标签: powershell


【解决方案1】:

您的测试语法错误。

-Contains 将寻找完全匹配,而不是通配符匹配,而且每个 -and 条件必须是独立测试,例如

If ($Numbers -contains 0 -and $Numbers -contains 1 -and $Numbers -contains 2)

"1," 或 "2," 本身是非空字符串,并且将始终评估为 $true,没有应用任何类型的比较操作他们。

【讨论】:

    【解决方案2】:

    反转if语句,先测试0、1、2、3,在Elseif中测试0、1、2。您应该始终先测试更具体的情况。

    【讨论】:

      猜你喜欢
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多