PowerShell Substiture -eq for -contains比较字符串和数组时

Coc*_*edi 1 powershell

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

示例代码:

$arr = "Fred","Bob"
if($arr -eq "Bob")
    {
    Return $true
    }
    Else
    {
    Return $false
    }
Run Code Online (Sandbox Code Playgroud)

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

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

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

干杯,

皮特

PS类似地,如果我使用-contains将字符串与另一个字符串进行比较,如果两个字符串完全匹配,它将只返回$ true.

Mik*_*ll' 6

看看这段代码.

$arr = "Fred", "Bob"
$arr -eq "Bob"   # Bob
Run Code Online (Sandbox Code Playgroud)

文档的相关部分是

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

在这种情况下,输入是值的集合.但是,如果我们将那个早期的表达式转向,那么输入(左侧)是标量值'Bob',我们会得到完全不同的东西.

'Bob' -eq $arr   # False
Run Code Online (Sandbox Code Playgroud)