ค้นหาเว็บไซต์

รวมหลายเงื่อนไขในคำสั่ง if ใน PowerShell


เราใช้คำสั่ง if กับตัวดำเนินการเชิงตรรกะและตัวดำเนินการเปรียบเทียบเพื่อรวมเงื่อนไขหลายข้อใน PowerShell นอกจากนี้เรายังใช้วงเล็บที่แสดงด้วย (()) เพื่อจัดกลุ่มเงื่อนไขและควบคุมลำดับการประเมิน ดังนั้นจึงจำเป็นอย่างยิ่งที่จะต้องรู้ว่าเรามีตัวดำเนินการเชิงตรรกะ เลขคณิต และการเปรียบเทียบอะไร พวกมันหมายถึงอะไร และทำอะไรได้บ้าง ดูตารางต่อไปนี้เพื่อความเข้าใจอย่างรวดเร็ว
ตัวดำเนินการเปรียบเทียบ ตรรกะ และเลขคณิตทั้งหมดและลำดับก่อนหน้าจะอธิบายในรูปแบบตารางหลังตัวอย่างโค้ด

การใช้ if กับตัวดำเนินการเชิงตรรกะและการเปรียบเทียบ

ใช้คำสั่ง if กับตัวดำเนินการเชิงตรรกะหนึ่งตัว (-และ) และตัวดำเนินการเปรียบเทียบสองตัว (-gt และ -lt) เพื่อรวมเงื่อนไขหลายข้อใน PowerShell

ใช้ if ด้วย -and, -gt, & -lt:

$number1 = 3
$number2 = 11
if ($number1 -lt 4 -and $number2 -gt 10){
    echo "'$number1' is less than '4' while '$number2' is greater than '10'"
}

เอาท์พุท :

'3' is less than '4' while '11' is greater than '10'

คำสั่ง if ข้างต้นจะถูกดำเนินการเฉพาะในกรณีที่ทั้งสองเงื่อนไขเป็น True; มาดูอีกตัวอย่างหนึ่งที่เงื่อนไขทั้งสองไม่เป็นที่พอใจ

ใช้ if ด้วย -and, -gt, & -lt:

$number1 = 4
$number2 = 11
if ($number1 -lt 4 -and $number2 -gt 10){
    echo "'$number1' is less than '4' while '$number2' is greater than '10'"
}

เราจะไม่ได้รับผลลัพธ์ใดๆ ในครั้งนี้ เนื่องจากยังต้องปฏิบัติตามเงื่อนไขทั้งสองข้อ

ใช้คำสั่ง if กับตัวดำเนินการเชิงตรรกะหนึ่งตัว (-หรือ) และตัวดำเนินการเปรียบเทียบหนึ่งตัว (-eq) เพื่อรวมหลายเงื่อนไขใน PowerShell .

ใช้ if ด้วย -หรือ และ -eq:

$firstname = "John"
$lastname = "Williamson"
if ($firstname -eq "John" -or $lastname -eq "Williamson") {
    echo "Condition satisfied."
}
else{
    echo "Condition not satisfied."
}

เอาท์พุท :

Condition satisfied.

ในที่นี้ บล็อก if จะถูกดำเนินการก็ต่อเมื่อเงื่อนไขที่ระบุอย่างน้อยหนึ่งรายการหรือทั้งหมดจะเป็น True; มิฉะนั้น บล็อก else จะถูกดำเนินการ มาแก้ไขตัวอย่างที่ไม่มีเงื่อนไข True

ใช้ if ด้วย -หรือ และ -eq:

$firstname = "Martin"
$lastname = "Guptill"
if ($firstname -eq "John" -or $lastname -eq "Williamson") {
    echo "At least one or all conditions are satisfied."
}
else{
    echo "No condition is satisfied."
}

เอาท์พุท :

No condition is satisfied.

ใช้คำสั่ง if กับตัวดำเนินการเชิงตรรกะสองตัว (-not และ -or) และตัวดำเนินการเปรียบเทียบหนึ่งตัว (-lt) เพื่อรวมเงื่อนไขหลายข้อใน PowerShell

ใช้ if ด้วย -not, -or, & -eq:

if (-not 4 -le 2 -or 4 -lt 2) {
    echo "Do something."
}

เอาท์พุท :

Do something.

จุดสนใจ! ตัวอย่างนี้ต้องการความสนใจของคุณเพื่อทำความเข้าใจ ขั้นแรก จำเป็นต้องทราบลำดับความสำคัญของโอเปอเรเตอร์แต่ละตัวที่ใช้ในข้อมูลโค้ดด้านบน ดังนั้น -not มีลำดับความสำคัญสูงสุดและจะถูกประเมินก่อน ในขณะที่ -or มีลำดับความสำคัญต่ำสุดและจะได้รับการพิจารณาเป็นอันดับสุดท้าย ตอนนี้ เรามีตัวดำเนินการ -lt สองตัวที่มีลำดับความสำคัญเท่ากัน แต่ตัวดำเนินการ -lt ที่อยู่หลังตัวดำเนินการ -not จะถูกประเมินทันที อันดับแรก.

นี่คือขั้นตอนการดำเนินการ:

  1. <รหัส>4 -lt 2=<รหัส>เท็จ
  2. -ไม่ใช่ 4 -lt 2=จริง
  3. อีก 4 -lt 2=False
  4. ผลลัพธ์ของขั้นตอนที่ 2 -หรือ ขั้นตอนที่ 3=True -หรือ False=True

เป็นเวลาที่ดีที่สุดที่จะแนะนำวงเล็บซึ่งควบคุมลำดับการประเมินและเพิ่มความสามารถในการอ่านโค้ด นิพจน์ภายใน () จะถูกประเมินก่อน หากเรามีวงเล็บซ้อนกัน จะพิจารณาวงเล็บด้านในก่อน ดูตัวอย่างต่อไปนี้

ใช้ if ด้วย -not, -or & -eq:

if ((-not (4 -le 2)) -or (4 -lt 2)) {
    echo "Do something."
}

เอาท์พุท :

Do something.

ในทำนองเดียวกัน เราสามารถใช้ตัวดำเนินการอื่นๆ ที่ระบุในตารางต่อไปนี้

ตัวดำเนินการเปรียบเทียบและลำดับความสำคัญ

ตัวดำเนินการเปรียบเทียบทั้งหมดจะส่งกลับค่าบูลีน (True/False), True หากตรงตามเงื่อนไข มิฉะนั้น False ประเด็นคือโอเปอเรเตอร์ใดจะถูกประเมินก่อนหากเรามีหลายรายการในแต่ละครั้ง ในกรณีนั้น พวกเขาจะได้รับการประเมินตามลำดับความสำคัญที่ระบุด้านล่างจากสูงสุดไปต่ำสุด

    -eq -ne -gt -ge -lt -le
    -like -notlike
    -match -notmatch
    -in -notIn
    -contains -notcontains

กลุ่มตัวดำเนินการเปรียบเทียบข้างต้นมีลำดับความสำคัญเท่ากัน โปรดทราบว่าคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ (นำหน้าด้วย c เช่น -cmatch) และไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ (นำหน้าด้วย i เช่น -imatch) ตัวแปรยังมีลำดับความสำคัญเท่ากัน (เหมือนกัน) ตัวดำเนินการที่มีลำดับความสำคัญสูงสุด (ลำดับความสำคัญ) จะได้รับการประเมินก่อน ในขณะที่ตัวดำเนินการที่มีลำดับความสำคัญเท่ากันจะถูกประเมินจากซ้ายไปขวาตามที่ปรากฏในนิพจน์ที่กำหนด

ในตัวอย่างที่นำเสนอในตารางด้านบน การดำเนินการอาร์เรย์ที่แสดงโดย @() ถูกนำมาใช้ในการสร้างอาร์เรย์

ตัวดำเนินการเชิงตรรกะและเลขคณิตและลำดับความสำคัญ

ตัวดำเนินการทางตรรกะทั้งหมดส่งคืนค่าบูลีน True หากตรงตามเงื่อนไขที่ระบุ มิฉะนั้น False ในทางกลับกัน ตัวดำเนินการทางคณิตศาสตร์ (ตัวดำเนินการระดับบิต) จะส่งกลับค่าตัวเลขตามตัวดำเนินการ ตัวดำเนินการเหล่านี้มีลำดับความสำคัญเช่นกัน โดยระบุจากด้านล่างจากลำดับความสำคัญสูงสุดไปต่ำสุด

    -band -bnot -bor -bxor
    -and -or -xor

กลุ่มตัวดำเนินการข้างต้นมีลำดับความสำคัญเท่ากัน ดังนั้นตัวดำเนินการที่มีลำดับความสำคัญสูงสุดจะได้รับการประเมินก่อน ในทางตรงกันข้าม ตัวดำเนินการที่มีลำดับความสำคัญเท่ากันจะถูกประเมินจากซ้ายไปขวาเมื่อเกิดขึ้นในนิพจน์ที่กำหนด

-not มีลำดับความสำคัญสูงสุดในตัวดำเนินการเปรียบเทียบ เลขคณิต และตรรกะทั้งหมด สิ่งสำคัญที่ควรสังเกตคือตัวดำเนินการเปรียบเทียบจะได้รับการประเมินเร็วกว่าตัวดำเนินการทางคณิตศาสตร์และตรรกะ เนื่องจากตัวดำเนินการเหล่านั้นมีลำดับความสำคัญสูงสุด คุณยังสามารถควบคุมลำดับการประเมินโดยใช้วงเล็บ
คุณสามารถตรวจสอบลำดับความสำคัญของผู้ปฏิบัติงานได้ที่นี่

นั่นคือทั้งหมดที่เกี่ยวกับวิธีการรวมเงื่อนไขหลายข้อในคำสั่ง if ใน PowerShell

บทความที่เกี่ยวข้อง