คำสั่ง IF

Bash Scripting เบื้องต้น

Alex Scriven

Data Scientist

คำสั่ง IF พื้นฐาน

คำสั่ง IF พื้นฐานใน Bash มีโครงสร้างดังนี้:

if [ CONDITION ]; then

# SOME CODE
else # SOME OTHER CODE
fi

เคล็ดลับ 2 ข้อ:

  • เว้นวรรคระหว่างวงเล็บเหลี่ยมกับเงื่อนไขด้านใน (บรรทัดแรก)
  • ใส่เซมิโคลอนหลังวงเล็บปิด ];
Bash Scripting เบื้องต้น

คำสั่ง IF กับสตริง

ตัวอย่างการเปรียบเทียบสตริงในคำสั่ง IF:

x="Queen"

if [ $x == "King" ]; then
echo "$x is a King!"
else echo "$x is not a King!" fi
Queen is not a King!

ใช้ != สำหรับ 'ไม่เท่ากับ' ได้เช่นกัน

Bash Scripting เบื้องต้น

คำสั่ง IF แบบคณิตศาสตร์ (ตัวเลือกที่ 1)

คำสั่ง IF แบบคณิตศาสตร์สามารถใช้โครงสร้างวงเล็บคู่ได้:

x=10

if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
Bash Scripting เบื้องต้น

คำสั่ง IF แบบคณิตศาสตร์ (ตัวเลือกที่ 2)

คำสั่ง IF แบบคณิตศาสตร์ยังใช้วงเล็บเหลี่ยมร่วมกับ flag แทน (>, <, =, != ฯลฯ) ได้ด้วย:

  • -eq สำหรับ 'เท่ากับ'
  • -ne สำหรับ 'ไม่เท่ากับ'
  • -lt สำหรับ 'น้อยกว่า'
  • -le สำหรับ 'น้อยกว่าหรือเท่ากับ'
  • -gt สำหรับ 'มากกว่า'
  • -ge สำหรับ 'มากกว่าหรือเท่ากับ'
Bash Scripting เบื้องต้น

ตัวอย่างคำสั่ง IF แบบคณิตศาสตร์

ตัวอย่างก่อนหน้าเขียนใหม่ด้วยสัญกรณ์วงเล็บเหลี่ยม:

x=10
if [ $x -gt 5 ]; then
    echo "$x is more than 5!"
fi
10 is more than 5!
Bash Scripting เบื้องต้น

Conditional flag อื่น ๆ ใน Bash

Bash ยังมี flag เกี่ยวกับไฟล์หลายรูปแบบ เช่น:

  • -e ถ้าไฟล์มีอยู่
  • -s ถ้าไฟล์มีอยู่และมีขนาดมากกว่าศูนย์
  • -r ถ้าไฟล์มีอยู่และอ่านได้
  • -w ถ้าไฟล์มีอยู่และเขียนได้

และอื่น ๆ อีกมาก:

Bash Scripting เบื้องต้น

การใช้ AND และ OR ใน Bash

 

สำหรับการรวมเงื่อนไข (AND) หรือใช้คำสั่ง OR ใน Bash ให้ใช้สัญลักษณ์ต่อไปนี้:

  • && สำหรับ AND
  • || สำหรับ OR
Bash Scripting เบื้องต้น

หลายเงื่อนไข

ใน Bash สามารถเชื่อมเงื่อนไขได้ดังนี้:

x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
    echo "$x is more than 5 and less than 11!"
fi

หรือใช้สัญกรณ์วงเล็บเหลี่ยมคู่:

x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
    echo "$x is more than 5 and less than 11!"
fi
Bash Scripting เบื้องต้น

IF กับโปรแกรม command-line

ใช้คำสั่ง command-line ในเงื่อนไขโดยตรงได้เช่นกัน โดยไม่ต้องใช้วงเล็บเหลี่ยม

ตัวอย่างเช่น ถ้าไฟล์ words.txt มีข้อความ 'Hello World!' อยู่ภายใน:

if grep -q Hello words.txt; then
    echo "Hello is inside!"
fi
Hello is inside!
Bash Scripting เบื้องต้น

IF กับ shell ภายใน shell

ใช้ shell ภายใน shell สำหรับเงื่อนไขได้ด้วย

ลองเขียนตัวอย่างก่อนหน้าใหม่ ซึ่งให้ผลลัพธ์เหมือนเดิม

if $(grep -q Hello words.txt); then
    echo "Hello is inside!"
fi
Hello is inside!
Bash Scripting เบื้องต้น

มาฝึกกันเถอะ!

Bash Scripting เบื้องต้น

Preparing Video For Download...