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

Bash If Statement: ไวยากรณ์ รูปแบบต่าง ๆ กรณีการใช้งาน คำสั่ง และอื่น ๆ

พิอุส โบเดนมันน์ By พิอุส โบเดนมันน์ อ่าน 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 วิธีใช้งาน และตัวอย่างจริง!

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

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

 

แชร์

บทความอื่นจากบล็อก

อ่านต่อ

ภาพหน้าปกบทความแอปที่โฮสต์เองที่ดีที่สุดสำหรับ Cosmos Cloud พร้อมแผงแอปรอบ Cosmos dashboard
เซิร์ฟเวอร์และ OS

แอปที่โฮสต์เองที่ดีที่สุดสำหรับ Cosmos Cloud: ไฟล์, มีเดีย, รหัสผ่าน, ระบบอัตโนมัติ และอื่น ๆ อีกมาก

Maybe คุณตั้งค่า Cosmos Cloud เรียบร้อยแล้วและอยากรู้ว่าแอปไหนเข้ากันได้ดี หรืออาจยังไม่แน่ใจเรื่อง Cosmos และแค่อยากดูว่ามันเหมาะกับเวิร์กโฟลว์ของคุณแค่ไหน

นิค ซิลเวอร์นิค ซิลเวอร์ อ่าน 16 นาที
Portainer vs Cosmos Cloud สำหรับการจัดการแอป Docker พร้อมไดอะแกรม Hybrid Setup และบล็อก Ops กับ Access แบบ Neon
เซิร์ฟเวอร์และ OS

Portainer vs Cosmos Cloud: ตัวเลือกไหนเหมาะกับการจัดการแอป Docker

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

นิค ซิลเวอร์นิค ซิลเวอร์ อ่าน 14 นาที
Cosmos Cloud vs CasaOS vs Umbrel กราฟิกประกอบที่แสดงสามเส้นทาง Self-Hosted ภายในเครือข่ายคลาวด์แบบนามธรรม
เซิร์ฟเวอร์และ OS

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

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

นิค ซิลเวอร์นิค ซิลเวอร์ อ่าน 11 นาที

พร้อม Deploy แล้วหรือยัง? เริ่มต้นที่ $2.48/เดือน

Cloud อิสระ ให้บริการมาตั้งแต่ปี 2008. AMD EPYC, NVMe, 40 Gbps. คืนเงินภายใน 14 วัน