ในการเขียน Shell Script คำสั่ง if ของ Bash มีบทบาทสำคัญอย่างมาก เพราะช่วยให้นักพัฒนาสามารถกำหนดเส้นทางการทำงานแบบมีเงื่อนไขได้ตามสถานการณ์ต่างๆ พูดง่ายๆ คือ คำสั่ง if ช่วยให้สคริปต์ตัดสินใจได้ ไม่ว่าจะเป็นการตรวจสอบผลลัพธ์ของคำสั่ง อินพุตจากผู้ใช้ หรือสถานะของระบบ ทำให้สคริปต์ตอบสนองต่อแต่ละสถานการณ์ได้อย่างถูกต้อง
เมื่อเขียน Bash script คำสั่ง if จะมีโครงสร้างที่แน่นอน โดยปกติจะเริ่มต้นด้วย "ifคำหลัก ตามด้วยเงื่อนไขที่ต้องการประเมินแล้ว คีย์เวิร์ด และคำสั่งอย่างน้อยหนึ่งคำสั่งที่จะดำเนินการเมื่อเงื่อนไขเป็นจริง
เพื่อให้ยืดหยุ่นมากขึ้น คำสั่ง if ยังรองรับส่วนเพิ่มเติมแบบไม่บังคับที่เรียกว่า "elifคำสั่ง (else if) จะทำงานเมื่อเงื่อนไขแรกเป็นเท็จ โดยให้เราตรวจสอบเงื่อนไขเพิ่มเติมและดำเนินการตามผลลัพธ์นั้น นอกจากนี้ คำสั่ง if ยังรองรับคำสั่ง "else" แบบเสริมได้ด้วย ซึ่งจะทำงานเมื่อไม่มีเงื่อนไขใดเป็นจริงเลย
การนำ if statement มาใช้ร่วมกับคำสั่ง Bash อื่น ๆ และฟีเจอร์ต่าง ๆ ของ shell scripting ช่วยให้นักพัฒนาสามารถเขียนสคริปต์ขั้นสูงที่ทำงานอัตโนมัติได้แม้กระทั่งงานที่ซับซ้อน อ่านต่อเพื่อทำความรู้จักกับ Bash if statement ให้ลึกขึ้น ทั้ง syntax วิธีใช้งาน และตัวอย่างจริง!
ไวยากรณ์คำสั่ง If ใน Bash
ไวยากรณ์ของ Bash คือกฎที่กำหนดโครงสร้างและรูปแบบของคำสั่งและสคริปต์ที่เขียนในภาษา Bash shell โดยประกอบด้วยองค์ประกอบและโครงสร้างหลายอย่าง เช่น:
- คำสั่ง: คือโปรแกรมหรือคำสั่งในตัวของ Shell ที่ใช้ทำงานเฉพาะด้าน คุณจะใช้เวลาส่วนใหญ่ในการเขียน Bash อยู่กับบรรทัดเหล่านี้
- อาร์กิวเมนต์: ค่าเหล่านี้คือสิ่งที่ส่งให้กับคำสั่งเพื่อกำหนดตัวเลือก พารามิเตอร์ หรือข้อมูลอินพุต ลองนึกภาพว่าเป็นเงื่อนไขที่ตั้งไว้สำหรับคำสั่ง เพื่อระบุว่าจะให้คำสั่งนั้นทำงานอย่างไร
- ตัวแปร: สัญลักษณ์เหล่านี้ใช้แทนค่าที่สามารถกำหนด แก้ไข หรือนำไปใช้ในนิพจน์ได้ โดยมักใช้เพื่อระบุค่าที่คำสั่งและอาร์กิวเมนต์ต้องจัดการ
- การเปลี่ยนเส้นทาง: นี่คือกระบวนการเปลี่ยนทิศทางของ input, output หรือ error ไปยังหรือจากไฟล์ อุปกรณ์ หรือคำสั่งอื่น หากไม่มีสิ่งนี้ คำสั่งของคุณอาจส่งข้อมูลไปผิดที่และทำให้โค้ดเกิดปัญหาได้
- ท่อ: นี่คือกลไกที่ใช้เชื่อมต่อผลลัพธ์ของคำสั่งหนึ่งไปยังอินพุตของอีกคำสั่งหนึ่ง โดยทั่วไปใช้เพื่อสร้างคำสั่งแบบมีเงื่อนไขที่ซับซ้อนในโปรแกรมขนาดใหญ่ และเพื่อเชื่อมคำสั่งหลายตัวเข้าด้วยกันเป็นลำดับ
- โครงสร้างการควบคุม: โครงสร้างควบคุม คือกลไกที่กำหนดลำดับการทำงานของคำสั่ง ไม่ว่าจะเป็น loop, เงื่อนไข หรือฟังก์ชัน การทำความเข้าใจโครงสร้างส่วนนี้เป็นพื้นฐานสำคัญของการเขียน command line ที่ซับซ้อน และช่วยให้โค้ดของคุณมีความสามารถมากขึ้นอีกระดับ
- ความเห็น: คำอธิบายประกอบเหล่านี้จะถูกละเว้นโดย shell และใช้สำหรับบันทึกโค้ดหรืออธิบายการทำงาน ซึ่งมีประโยชน์อย่างมากในฐานะจุดอ้างอิงเมื่อต้องวิเคราะห์หรือแก้ไขปัญหา โดยเฉพาะในโปรเจกต์ที่ทำงานร่วมกันเป็นทีม
ไวยากรณ์ของ Bash ต้องเขียนให้ถูกต้อง เพื่อให้ shell แปลและรันคำสั่งได้ตามที่ต้องการ หากมีข้อผิดพลาดทางไวยากรณ์ shell อาจแสดงข้อความแจ้งข้อผิดพลาด หรือทำงานในลักษณะที่ไม่คาดคิด
นี่คือตัวอย่างการใช้งาน Bash if statement จริง:
if condition then command1 command2 ... commandN elif condition2 then commandA commandB ... commandC else commandX commandY ... commandZ fi
ในกรณีนี้ "เงื่อนไข" หมายถึงการทดสอบที่ให้ผลลัพธ์เป็นจริงหรือเท็จ เมื่อเงื่อนไขเป็นจริง คำสั่งที่ระบุหลังคำหลัก "then" จะถูกดำเนินการ ตอนนี้สมมติว่าเราต้องการประเมินเงื่อนไขเพิ่มเติม เราสามารถใช้คำหลัก "elif" ได้ มันช่วยให้เราพิจารณาความเป็นไปได้อื่น หากไม่มีเงื่อนไขใดเป็นจริง คำสั่งที่ระบุหลังคำหลัก "else" จะเข้ามาใช้งาน เหมือนแผนสำรอง สุดท้าย เพื่อระบุจุดสิ้นสุดของคำสั่ง if เราใช้คำหลัก "if"
Bash Statement ทำงานอย่างไร?
ใน Bash scripting คำสั่ง if มีบทบาทสำคัญในการควบคุมทิศทางการทำงานของสคริปต์ตามผลลัพธ์ของเงื่อนไขที่กำหนด หน้าที่หลักของมันคือประเมินเงื่อนไข และหากเงื่อนไขนั้นเป็นจริง ก็จะสั่งให้ชุดคำสั่งที่ระบุไว้ทำงาน
ลองดูกันว่าเมื่อใช้คำสั่ง if ใน Bash script กระบวนการทำงานจะเป็นอย่างไร สคริปต์จะประเมินเงื่อนไขที่ระบุใน if statement ก่อน หากเงื่อนไขเป็นจริง คำสั่งในบล็อก "then" จะถูกเรียกใช้งาน
แต่หากเงื่อนไขเป็นเท็จ สคริปต์จะตรวจสอบเงื่อนไขใน elif ถัดไป หากเงื่อนไขใดใน elif เป็นจริง คำสั่งในบล็อก elif นั้นจะทำงานแทน และหากทั้งเงื่อนไขใน if และ elif ไม่มีข้อใดเป็นจริงเลย สคริปต์จะข้ามไปรันคำสั่งในบล็อก else แทน (หากมีการกำหนดบล็อก else ไว้)
โดยสรุป คำสั่ง if ทำหน้าที่เป็นกลไกตัดสินใจภายในสคริปต์ ช่วยให้สคริปต์เลือกเส้นทางการทำงานที่แตกต่างกันตามผลของการทดสอบ ซึ่งการทดสอบนั้นสามารถพิจารณาปัจจัยได้หลายอย่าง เช่น ผลลัพธ์ของคำสั่ง หรือค่าที่กำหนดให้กับตัวแปร
ตัวอย่าง Bash If Statement
มาออกจากทฤษฎีพื้นฐานกันสักที แล้วดูว่า Bash if statement ถูกนำไปใช้ในการเขียนโค้ดจริงอย่างไร นี่คือตัวอย่างที่แสดงให้เห็นวิธีการทำงานของ Bash if statement:
#!/bin/bash # set a variable x=5 # evaluate the variable if [ $x -gt 4 ] then echo "x is greater than 4." else echo "x is less than or equal to 4." fi
ในตัวอย่างนี้ คำสั่ง if จะประเมินค่าของตัวแปร x หาก x มากกว่า 4 สคริปต์จะพิมพ์ "x is greater than 4" แต่หาก x น้อยกว่าหรือเท่ากับ 4 สคริปต์จะพิมพ์ "x is less than or equal to 4" แทน
รู้จัก Bash If Statement รูปแบบต่างๆ และ Syntax ของคำสั่งที่เกี่ยวข้อง
เมื่อเข้าใจพื้นฐานของ Bash If Statement แล้ว มาเจาะลึกถึงรูปแบบย่อยและคำสั่งที่เกี่ยวข้องกัน ได้แก่ Basic If Statements, Nested If Statements, Bash If Else, If Elif Else และ Case Statements ทีละแบบ
คำสั่ง If พื้นฐาน
เริ่มต้นด้วย Bash if statement แบบพื้นฐาน คำสั่ง if ใน Bash จะตรวจสอบว่าเงื่อนไขเป็นจริงหรือไม่ แล้วรันชุดคำสั่งที่เกี่ยวข้องตามผลลัพธ์ นี่คือ syntax:
if [ condition ] then commands fi
ในกรณีนี้ สคริปต์จะประเมินเงื่อนไข หากเงื่อนไขเป็นจริง คำสั่งที่กำหนดไว้จะถูกรัน แต่หากเงื่อนไขเป็นเท็จ สคริปต์จะข้ามไปยังคำสั่งถัดไปโดยไม่รันสิ่งใดในบล็อก "then"
ชั้นในของ If
Nested if statement คือ if statement ที่ซ้อนอยู่ภายใน if statement อื่นอีกชั้น โครงสร้างแบบซ้อนนี้ช่วยให้สามารถทดสอบและวิเคราะห์เงื่อนไขที่ซับซ้อนขึ้นภายในสคริปต์ได้ นี่คือตัวอย่าง:
if [ condition1 ]
then
if [ condition2 ]
then
commands
fi
fi
จากคำสั่งจะเห็นว่า สคริปต์จะประเมิน condition1 เป็นขั้นแรก หาก condition1 เป็นจริง สคริปต์จะประเมิน condition2 ต่อ และหาก condition2 เป็นจริงด้วย สคริปต์จึงจะรันคำสั่งที่ต้องการ
Bash If Else Statements ในภาษา Thai: Bash คำสั่ง If Else
Bash if else statement ช่วยให้สคริปต์ตัดสินใจได้ตามว่าเงื่อนไขเป็นจริงหรือเท็จ ทำให้สามารถรันโค้ดต่างกันในแต่ละสถานการณ์ได้อย่างยืดหยุ่น นี่คือโครงสร้างของมัน:
if [ condition ] then commands1 else commands2 fi
โครงสร้างนี้รับประกันว่า หากเงื่อนไขเป็นจริง สคริปต์จะรัน "commands1" ทันที แต่หากเงื่อนไขเป็นเท็จ จะสลับไปรัน "commands2" แทน
ถ้า Elif Else Statements
บางครั้งคุณต้องพิจารณาเงื่อนไขหลายข้อพร้อมกับผลลัพธ์ที่แตกต่างกัน if elif else statement ช่วยให้ทำสิ่งนี้ได้อย่างตรงจุด ดู syntax ต่อไปนี้:
if [ condition1 ] then commands1 elif [ condition2 ] then commands2 else commands3 fi
สคริปต์จะประเมิน condition1 ก่อน หาก condition1 เป็นจริง จะรัน commands1 ทันที แต่หาก condition1 เป็นเท็จ สคริปต์จะไปประเมิน condition2 ต่อ หาก condition2 เป็นจริง จะรัน commands2 และหากทั้ง condition1 และ condition2 เป็นเท็จ สคริปต์จะรัน commands3 แทน
คำสั่ง Case
ใน Bash มี case statement ซึ่งทำงานคล้ายกับ switch statement ในภาษาโปรแกรมมิงอื่นๆ ใช้สำหรับรันชุดคำสั่งที่แตกต่างกันตามค่าของตัวแปร ดูโครงสร้างได้ที่นี่:
case expression in pattern1) commands1;; pattern2) commands2;; pattern3) commands3;; *) default commands;; esac
สคริปต์จะประเมินตัวแปร expression แล้วจับคู่กับ pattern ต่างๆ เมื่อพบ pattern ที่ตรงกัน ชุดคำสั่งที่สอดคล้องกันจะถูกรัน แต่หาก pattern ไม่ตรงกับข้อใดเลย คำสั่งใน default จะถูกรันแทน โดย pattern ดอกจัน (*) ทำหน้าที่เป็น wildcard ที่จับคู่กับทุกสิ่งที่ยังไม่ถูกครอบคลุม
ตัวดำเนินการเชิงตรรกะ Bash
อีกส่วนสำคัญของ Bash if statement คือ Logical Operator ตัวดำเนินการเหล่านี้ช่วยให้คุณรวมเงื่อนไขหลายข้อเข้าด้วยกัน และตัดสินใจตามความจริงหรือเท็จของเงื่อนไขที่รวมกันนั้น Bash มี logical operator หลักสามประเภทสำหรับใช้ใน if statement นี่คือตัวอย่างของคำสั่ง logical operator ทั้งสามแบบ
- Bash AND (&&):
if [ $age -ge 18 ] && [ "$citizen" == "yes" ]; then echo "You meet the criteria for voting." fi
- ตรรกะ หรือ (||):
if [ "$status" == "active" ] || [ "$role" == "admin" ]; then echo "Access granted." fi
- ไม่เท่ากับ:
if(( ! $a == "true" )) then echo "a" was initially false. else echo "a" was initially true. fi
สรุป
บทความนี้ได้แนะนำพื้นฐานของ Bash if statement และวิธีใช้งาน รวมถึงอธิบายว่าคำสั่งเหล่านี้ช่วยให้โค้ดของคุณเป็นระเบียบและใช้งานได้ดีขึ้นอย่างไร เมื่อเข้าใจการใช้ conditional statement อย่างถูกต้อง คุณก็พร้อมสร้างสคริปต์ที่จัดการงานซับซ้อนและการตัดสินใจได้อย่างมีประสิทธิภาพ
คุณเพิ่งเริ่มต้นกับโลกของ Linux ใช่ไหม? ให้เราเป็นแนวทางของคุณในการเดินทางครั้งนี้! Linux VPS เป็นจุดเริ่มต้นที่เหมาะสมสำหรับผู้ใช้ใหม่ ใช้งานง่ายแต่ยังคงประสิทธิภาพเต็มที่ ด้วยอินเทอร์เฟซที่เข้าใจง่ายและทีมซัปพอร์ตผู้เชี่ยวชาญ คุณจะพบว่าการใช้งานเซิร์ฟเวอร์ Linux ไม่ใช่เรื่องยากอีกต่อไป ไม่ว่าจะเป็นการตั้งค่าเว็บไซต์ ทดสอบแอปพลิเคชัน หรือสำรวจโลกของ Linux VPS ของเราก็พร้อมให้คุณทดลองใช้ได้อย่างมั่นใจและไม่ยุ่งยาก เริ่มต้นกับ Linux วันนี้ได้เลย ดูตัวเลือก Linux VPS ของเราแล้วก้าวแรกของคุณจะไม่มีวันลืม!
เลือกแพ็กเกจ Linux VPS แบบประหยัดหรือพรีเมียมสำหรับโฮสต์เว็บไซต์หรือรีโมทเดสก์ท็อป ในราคาที่คุ้มค่าที่สุด VPS ทำงานบน Linux KVM เพื่อประสิทธิภาพที่สูงขึ้น และติดตั้งบนฮาร์ดแวร์ที่ทรงพลังพร้อมพื้นที่จัดเก็บ NVMe SSD เพื่อความเร็วสูงสุด
อ่านเพิ่มเติมคำถามที่พบบ่อย
สามารถใช้ logical operator ใน Bash if statement ได้ไหม?
ได้ คุณสามารถใช้ logical operator เช่น และ และ '||' ใน Bash if statement ได้ ตัวอย่างเช่น if [ $var -gt 0 ] && [ $var -lt 10 ]; then … จะรันบล็อกโค้ดนั้นเมื่อ $var มีค่ามากกว่า 0 และน้อยกว่า 10
สามารถใช้หลายเงื่อนไขใน if statement เดียวได้ไหม?
ได้ คุณสามารถใช้หลายเงื่อนไขใน Bash if statement เดียวโดยใช้ logical operator เช่น -a (AND) หรือ -o (OR) เพื่อรวมเงื่อนไขเข้าด้วยกัน ตัวอย่างเช่น if [ $var -gt 0 -a $var -lt 10 ]; then … จะรันบล็อกโค้ดนั้นเมื่อ $var มีค่ามากกว่า 0 AND น้อยกว่า 10
สามารถใช้ command substitution ใน Bash if statement ได้ไหม?
ได้ คุณสามารถใช้ command substitution ใน Bash if statement ได้โดยครอบคำสั่งด้วย $() หรือ backticks (”เช่น if [ $(whoami) == "root" ]; then … จะรันบล็อกโค้ดนั้นเมื่อผู้ใช้ปัจจุบันเป็น root
[[ vs [ vs ( vs ((: แต่ละตัวต่างกันอย่างไร?
โดยสรุป: [[ ใช้สำหรับทดสอบเงื่อนไขขั้นสูง, [ ใช้สำหรับทดสอบเงื่อนไขพื้นฐาน, ( ใช้สำหรับจัดกลุ่ม subshell และรันคำสั่ง, (( ใช้สำหรับการคำนวณทางคณิตศาสตร์