我在使用以下腳本時遇到問題。我的目標是通過下面的所有 if 陳述句檢查 $city 并將我正確的 $region 回傳給我。目前它一直回傳“NA-West”,因為這是我擁有的最后一個 if 陳述句。任何幫助表示贊賞,謝謝
$city = "New York"
if ($city -eq "Bangalore" -or "Hong Kong" -or "Jakarta" -or "Melbourne" -or "New Delhi" -or "Seoul" -or "Shanghai" -or "Sydney" -or "Taipei City" -or "Tokyo") {
$region = "APAC"
}
if ($city -eq "Hamburg" -or "London" -or "Madrid" -or "Milan" -or "Paris" ) {
$region = "EMEA"
}
if ($city -eq 'Chicago' -or 'Detroit' -or 'New York' -or 'Toronto') {
$region = "NA-East"
}
if ($city -eq "Bellevue" -or "Boulder" -or "Denver" -or "Irvine" -or "Los Angeles" -or "San Francisco" -or "San Jose" -or "Santa Barbara" -or "Seattle" -or "Ventura") {
$region = "NA-West"
}
Write-Host "This is the region: " $region
Write-Host "This is the city: " $city
uj5u.com熱心網友回復:
這不能按預期作業,因為您的所有if條件始終為真 - 因此$region = "NA-West"將始終最后執行。
原因是該-or運算子是一個布爾邏輯[bool]運算子 - 它需要兩個運算元并通過嘗試將任一值轉換為 a (例如$true或$false)來評估其中至少一個是否“真實” 。
當你有這樣的表達時:
$city -eq "Bellevue" -or "Boulder"
PowerShell 有效地將其解釋為:
[bool]($city -eq "Bellevue") -or [bool]("Boulder")
當 PowerShell 將字串轉換為 a[bool]時,規則是將空字串轉換為$false,而非空字串(如“Boulder”)轉換為$true.
因此,您的最后一條if陳述句與您撰寫的效果完全相同:
if ($city -eq "Bellevue" -or $true -or $true -or $true -or $true -or $true -or $true -or $true -or $true -or $true) {
您需要繼續重申要進行的比較:
if($city -eq "Bellevue" -or $city -eq "Boulder" -or $city -eq "Denver" -or $city -eq "Irvine" -or $city -eq "Los Angeles" -or $city -eq "San Francisco" -or $city -eq "San Jose" -or $city -eq "Santa Barbara" -or $city -eq "Seattle" -or $city -eq "Ventura")
或者,更好的是,使用-contains/-in運算子:
if($city -in "Bellevue", "Boulder", "Denver", "Irvine", "Los Angeles", "San Francisco", "San Jose", "Santa Barbara", "Seattle", "Ventura")
uj5u.com熱心網友回復:
給定你的代碼
$city = "New York"
if ($city -eq "Bangalore" -or $city -eq "Hong Kong" -or $city -eq "Jakarta" -or $city -eq "Melbourne" -or $city -eq "New Delhi" -or $city -eq "Seoul" -or $city -eq "Shanghai" -or $city -eq "Sydney" -or $city -eq "Taipei City" -or $city -eq "Tokyo") {
$region = "APAC"
}
if ($city -eq "Hamburg" -or $city -eq "London" -or $city -eq "Madrid" -or $city -eq "Milan" -or $city -eq"Paris" ) {
$region = "EMEA"
}
if ($city -eq 'Chicago' -or $city -eq 'Detroit' -or $city -eq 'New York' -or $city -eq 'Toronto') {
$region = "NA-East"
}
if ($city -eq "Bellevue" -or $city -eq "Boulder" -or $city -eq "Denver" -or $city -eq "Irvine" -or $city -eq "Los Angeles" -or $city -eq "San Francisco" -or $city -eq "San Jose" -or $city -eq "Santa Barbara" -or $city -eq "Seattle" -or $city -eq "Ventura") {
$region = "NA-West"
}
Write-Host "This is the region: " $region
Write-Host "This is the city: " $city
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/433803.html
下一篇:IF陳述句不接受引數-電子表格
