我希望结果是bool $ true或$ false
$testlist = @("red","orange","green")
$testlist -eq "green"
这应该导致$ True,但它会导致"绿色"
对比
$testlist -ne "green"
将其他值作为字符串返回,除了"绿色"
用于查找您正在查找的值的简洁功能,但对于实际的条件返回没有用,因为它每次都会产生$ True,因为它是非零长度值。
答案 0 :(得分:1)
您应该测试一个值是否在数组中:
$testlist -contains "green"
答案 1 :(得分:1)
我希望结果是bool
$true
或$false
您运行的代码可以作为布尔值进行评估,您仍然可以获得相同的结果。非常多且非零的整数和非空字符串将被转换为布尔容易。
PS C:\Users\Matt> $testlist = @("red","orange","green")
[bool]($testlist -eq "green")
True
-eq
和许多其他运算符(如-match
)一起使用数组和标量值。
虽然它隐藏了幕后发生的事情,但这可以作为if
语句。
if($testlist -eq "green"){"Green is in there"}
不确定是否发生了这种情况,但是您的代码评估方式是PowerShell返回满足查询的所有数组成员。将此视为另一个例子:
PS C:\Users\Cameron> $testlist = @("red","orange","green","green")
$testlist -eq "green"
green
green
你看到它返回绿色两次,因为它在数组中两次。
4c74356b41's answer使用-contains
数组运算符,它通过设计返回一个布尔值。如果你至少有v3,你也可以使用更直观的-in
,它的工作方式几乎相同。
"green" -in "red","orange","green"
我只是想确定你知道发生了什么,并且通常一种方法来解决PowerShell的疯狂问题