PowerShell substiture -eq for语言 - 包含时比较字符串和数组时是否包含



今天在PowerShell中将字符串与数组进行比较时,我错误地使用了-eq而不是-contains,但仍然得到了预期的结果。

示例代码:

$arr = "Fred","Bob"
if($arr -eq "Bob")
{
Return $true
}
Else
{
Return $false
}

即上面的输出将是$true的,就像比较字符串"Fred"一样,但与"Steve"进行比较将导致$false。 如果我使用 -contains,也会发生同样的情况。

看起来PowerShell已经"帮助了我",并将我的-eq变成了-contains。 这个假设正确吗?

其次,PowerShell有没有理由这样做,而其他语言(据我所知(没有?

干杯

皮特

附言同样,如果我使用 -contains 将一个字符串与另一个字符串进行比较,则只有在两个字符串完全匹配时,它才会返回$true。

看看这段代码。

$arr = "Fred", "Bob"
$arr -eq "Bob"   # Bob

文档的相关部分是

当运算符的输入是标量值时,比较运算符将返回布尔值。当输入是值的集合时,比较运算符将返回任何匹配的值。

在这种情况下,输入是值的集合。但是,如果我们把前面的表达式转过来,使输入(左侧(是标量值"Bob",我们会得到完全不同的东西。

'Bob' -eq $arr   # False

最新更新