รวมหลายเงื่อนไขในคำสั่ง 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 จะถูกประเมินทันที อันดับแรก.
นี่คือขั้นตอนการดำเนินการ:
- <รหัส>4 -lt 2=<รหัส>เท็จ
-ไม่ใช่ 4 -lt 2=จริง- อีก
4 -lt 2=False - ผลลัพธ์ของขั้นตอนที่ 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
