比较字符串与数组

iro*_*oel 4 powershell

我是PowerShell脚本的新手.这是我使用pester创建测试时出现的问题.问题是如何比较数组与字符串,如下所示:

@('hello', 'world') -eq 'hello world' # returns nothing
'hello world' -eq @('hello', 'world') # returns true
Run Code Online (Sandbox Code Playgroud)

如果有人能告诉我差异,我将不胜感激.

Bru*_*tte 6

PowerShell运营商遵循"左手规则".换句话说,LHS上对象的类型决定了比较的完成方式.如果LHS是一个数组,那么右侧将与RHS数组的每个元素进行比较.如果存在匹配,则运算符返回匹配元素.如果没有匹配,则操作员不返回任何内容.另一方面,如果LHS是一个字符串,那么右侧将被转换为字符串并进行比较.通过执行等效操作将数组转换为字符串$array -join $OFS.$ OFS(输出字段分隔符)是内置变量,默认为"".这就是你的第二次比较成功@("Hello","world")转换为"Hello world"的原因.