我想要的結果是一個布爾值$ true或$ falsePowerShell的條件語句返回非布爾結果
$testlist = @("red","orange","green")
$testlist -eq "green"
這將導致在$真,而是它會導致「綠色」
對比
$testlist -ne "green"
返回其他值,除了「綠色」
整潔的功能來查找字符串您正在查找的值,但對實際的條件收益無用,因爲它每次都會導致$ True,因爲它是非零長度值。
我想要的結果是一個布爾值$ true或$ falsePowerShell的條件語句返回非布爾結果
$testlist = @("red","orange","green")
$testlist -eq "green"
這將導致在$真,而是它會導致「綠色」
對比
$testlist -ne "green"
返回其他值,除了「綠色」
整潔的功能來查找字符串您正在查找的值,但對實際的條件收益無用,因爲它每次都會導致$ True,因爲它是非零長度值。
我想要的結果是一個布爾
$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的瘋狂的方法
對bool的演員很聰明,我喜歡;) – 4c74356b41
謝謝條件操作符返回一個數組的answers.The概念是一個怪胎。 – DHammah