ลด 50% ทุกแพลน เวลาจำกัด เริ่มต้นที่ $2.48/mo
เหลือ 10 นาที
Server และ OS

Bash If Statement: Syntax รูปแบบต่างๆ Use Cases คำสั่ง และอื่นๆ

Pius Bodenmann By Pius Bodenmann อ่าน 10 นาที อัปเดตเมื่อ 28 มกราคม 2024
การเขียนสคริปต์ Bash

ในการเขียน Shell Script คำสั่ง if ของ Bash มีบทบาทสำคัญอย่างมาก เพราะช่วยให้นักพัฒนาสามารถกำหนดเส้นทางการทำงานแบบมีเงื่อนไขได้ตามสถานการณ์ต่างๆ พูดง่ายๆ คือ คำสั่ง if ช่วยให้สคริปต์ตัดสินใจได้ ไม่ว่าจะเป็นการตรวจสอบผลลัพธ์ของคำสั่ง อินพุตจากผู้ใช้ หรือสถานะของระบบ ทำให้สคริปต์ตอบสนองต่อแต่ละสถานการณ์ได้อย่างถูกต้อง

เมื่อเขียน Bash script คำสั่ง if จะมีโครงสร้างที่แน่นอน โดยปกติจะเริ่มต้นด้วย "ifคำหลัก ตามด้วยเงื่อนไขที่ต้องการประเมินแล้ว คีย์เวิร์ด และคำสั่งอย่างน้อยหนึ่งคำสั่งที่จะดำเนินการเมื่อเงื่อนไขเป็นจริง

เพื่อให้ยืดหยุ่นมากขึ้น คำสั่ง if ยังรองรับส่วนเพิ่มเติมแบบไม่บังคับที่เรียกว่า "elifคำสั่ง (else if) จะทำงานเมื่อเงื่อนไขแรกเป็นเท็จ โดยให้เราตรวจสอบเงื่อนไขเพิ่มเติมและดำเนินการตามผลลัพธ์นั้น นอกจากนี้ คำสั่ง if ยังรองรับคำสั่ง "else" แบบเสริมได้ด้วย ซึ่งจะทำงานเมื่อไม่มีเงื่อนไขใดเป็นจริงเลย

การนำ if statement มาใช้ร่วมกับคำสั่ง Bash อื่น ๆ และฟีเจอร์ต่าง ๆ ของ shell scripting ช่วยให้นักพัฒนาสามารถเขียนสคริปต์ขั้นสูงที่ทำงานอัตโนมัติได้แม้กระทั่งงานที่ซับซ้อน อ่านต่อเพื่อทำความรู้จักกับ Bash if statement ให้ลึกขึ้น ทั้ง syntax วิธีใช้งาน และตัวอย่างจริง!

ไวยากรณ์ของ Bash If Statement

ไวยากรณ์ของ 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 Statements ทำงานอย่างไร

ใน 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 แล้ว มาเจาะลึกถึงรูปแบบย่อยและคำสั่งที่เกี่ยวข้องกัน ได้แก่ 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 Hosting

รับ Linux VPS แบบ economy หรือ premium สำหรับ host เว็บไซต์หรือ remote desktop ในราคาที่ถูกที่สุด VPS รันบน Linux KVM เพื่อประสิทธิภาพที่เพิ่มขึ้นและทำงานบนฮาร์ดแวร์ที่ทรงพลังพร้อม NVMe SSD storage เพื่อความเร็วที่เพิ่มขึ้น

อ่านต่อ

คำถามที่พบบ่อย

สามารถใช้ 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 และรันคำสั่ง, (( ใช้สำหรับการคำนวณทางคณิตศาสตร์

 

แชร์

บทความเพิ่มเติมจากบล็อก

อ่านต่อ

ภาพปก Best Self-Hosted Apps You Can Run with Cosmos Cloud พร้อมแผงแอปรอบ dashboard ของ Cosmos
Server และ OS

แอป Self-Hosted ที่ดีที่สุดที่คุณรันได้บน Cosmos Cloud: ไฟล์ สื่อ รหัสผ่าน ระบบอัตโนมัติ และอื่นๆ!

บางทีคุณอาจตั้งค่า Cosmos Cloud ไว้แล้วและตอนนี้อยากเห็นว่าแอปไหนเข้ากันได้ดี หรืออาจยังไม่ตัดสินใจเลือก Cosmos และเพียงต้องการดูว่าเหมาะกับ workflow ของคุณแค่ไหน

Nick SilverNick Silver อ่าน 16 นาที
ภาพปก Portainer vs Cosmos Cloud for Managing Docker Apps พร้อมแผนภาพการตั้งค่าแบบ hybrid และบล็อก ops vs access สีนีออน
Server และ OS

Portainer กับ Cosmos Cloud: ตัวไหนเหมาะที่สุดสำหรับจัดการแอป Docker

หากคุณรู้จัก Docker อยู่แล้วและเพียงต้องการวิธีที่สะอาดกว่าในการรัน app stack ที่เติบโตขึ้น คำตอบสั้นๆ ของ Portainer vs Cosmos Cloud คือ Portainer เป็นตัวเลือกที่แข็งแกร่งกว่าสำหรับการจัดการโดยตรง

Nick SilverNick Silver อ่าน 14 นาที
กราฟิก feature ของ Cosmos Cloud vs CasaOS vs Umbrel แสดงเส้นทาง self-hosted สามแบบในโลกเครือข่ายคลาวด์นามธรรม
Server และ OS

Cosmos Cloud vs CasaOS vs Umbrel: แพลตฟอร์ม Self-Hosted ตัวไหนเหมาะกับการตั้งค่าของคุณ?

คำตอบสั้นๆ คือ CasaOS ยังคงเป็นที่ที่เริ่มต้นได้ง่ายที่สุด Umbrel มีความรู้สึกที่ผ่านการคัดสรรสะอาดที่สุด และ Cosmos Cloud มีเหตุผลมากขึ้นเมื่อคุณต้องการการควบคุมที่แน่นกว่า

Nick SilverNick Silver อ่าน 11 นาที

พร้อมติดตั้งหรือยัง? เริ่มต้น $2.48/เดือน

คลาวด์อิสระ ตั้งแต่ปี 2008 AMD EPYC, NVMe, 40 Gbps คืนเงินภายใน 14 วัน