瓦爾在我這,這不工作:
$var1 = "6.0.6001"
$var2 = "6.1.7001"
$var3 = "6.2.8074"
$var4 = "6.3.8074"
if($var1 -match "6.1.?" -or "6.2.?" -or "6.3.?") {
write-host "1"
}else{
write-host "2"
}
不管是什麼,則返回1。
這應該是什麼樣子?
謝謝。
瓦爾在我這,這不工作:
$var1 = "6.0.6001"
$var2 = "6.1.7001"
$var3 = "6.2.8074"
$var4 = "6.3.8074"
if($var1 -match "6.1.?" -or "6.2.?" -or "6.3.?") {
write-host "1"
}else{
write-host "2"
}
不管是什麼,則返回1。
這應該是什麼樣子?
謝謝。
運行這段代碼:
if("6.2.?" -or "6.3.?") {
write-host "1"
}else{
write-host "2"
}
它也將返回1不管是什麼。
更改您的條件:
if($var1 -match "6.1.?" -or $var1 -match "6.2.?" -or $var1 -match "6.3.?")
甚至更好:
if($var1 -match "6.[1-3].?")
只是爲了闡述亞當的回答。您If
說法是不工作的打算,因爲PowerShell中只看到了三個條件你沒有打算
if($var1 -match "6.1.?" -or "6.2.?" -or "6.3.?")
if(($var1 -match "6.1.?") -or ("6.2.?" -or "6.3.?"))
的上面兩行的功能相同。打破第二個操作("6.2.?" -or "6.3.?")
多一點:轉換爲布爾值的非零長度字符串將始終爲$true
。比較兩個非零長度的字符串與-or
將始終返回$true
。在你的例子中的第一個條款($var1 -match "6.1.?")
是$false
。 If($true -or $false)
本質上就是你的If
聲明歸結爲哪個,它總是會返回$true
。亞當斯答案顯示如何得到你正在尋找的邏輯
if($var1 -match "6.1.?" -or $var1 -match "6.2.?" -or $var1 -match "6.3.?")
if(($var1 -match "6.1.?") -or ($var1 -match "6.2.?") -or ($var1 -match "6.3.?"))
以上兩個語句都是相同的。第二個有助於理解邏輯。欲瞭解更多信息,請參閱about_Logical_Operators。當邏輯不按照你想要的方式行事時,你只需要括號。