คำสั่ง if-else ในการเขียนสคริปต์ Bash คล้ายกับภาษาโปรแกรมมิ่งอื่นๆ มันเป็นวิธีที่โปรแกรมตัดสินใจ
ในคำสั่ง if-else การดำเนินการของบล็อกคำสั่งจะถูกตัดสินใจจากผลลัพธ์ของเงื่อนไข if
ไวยากรณ์คำสั่ง If-Else ใน Bash
ไวยากรณ์ของคำสั่ง if-else ใน Bash คือ:
if [condition]
then
// โค้ดบล็อก if
else
// โค้ดบล็อก else
fi
ถ้าเงื่อนไขประเมินผลเป็น true โค้ดบล็อก if จะถูกดำเนินการ และถ้าเงื่อนไขประเมินผลเป็น false โค้ดบล็อก else จะถูกดำเนินการ
หมายเหตุ: บล็อก if จะถูกดำเนินการ ก็ต่อเมื่อ เงื่อนไขประเมินผลเป็น true เท่านั้น
คำสั่ง else และบล็อกโค้ด else เป็นตัวเลือก (optional)
เราต้องจบคำสั่ง if ด้วยคีย์เวิร์ด fi
การเปรียบเทียบเงื่อนไข
นิพจน์ที่ใช้โดยโครงสร้างเงื่อนไขต้องประเมินผลเป็น true หรือ false นิพจน์อาจเป็นสตริงเดี่ยวหรือตัวแปร
- น้อยกว่า - แทนด้วย:
$a -lt $bหรือ$a < $b - มากกว่า - แทนด้วย:
$a -gt $bหรือ$a > $b - น้อยกว่าหรือเท่ากับ - แทนด้วย:
$a -le $bหรือ$a <= $b - มากกว่าหรือเท่ากับ - แทนด้วย:
$a -ge $bหรือ$a >= $b - เท่ากับ - แทนด้วย:
$a -eq $bหรือ$a == $b - ไม่เท่ากับ - แทนด้วย:
$a -ne $bหรือ$a != $b
ตัวดำเนินการตรรกะ
นิพจน์ภายในคำสั่ง if อาจเป็นการรวมเงื่อนไขเปรียบเทียบหลายอย่างด้วยตรรกะ
ตัวดำเนินการตรรกะมีดังนี้:
- ตรรกะ AND - แทนด้วย
$a AND $bหรือ$a && $bประเมินผลเป็นtrueเมื่อตัวแปรหรือคำสั่งทั้งสองเป็น true - ตรรกะ OR - แทนด้วย
$a OR $bหรือ$a || $bประเมินผลเป็นtrueเมื่อตัวแปรหรือคำสั่งใดตัวหนึ่งเป็น true
หมายเหตุ: เมื่อใช้ตัวดำเนินการตรรกะ นิพจน์เงื่อนไขควรถูกล้อมรอบด้วยวงเล็บคู่ [[ ]]
ตัวอย่าง:
#!/bin/bash
first_name="John"
last_name="Doe"
if [[ $first_name = "John" && $last_name = "Doe" ]]
then
echo 'hello John Doe'
fi
ตัวอย่าง Bash if
คำสั่ง if เป็นคำสั่งเงื่อนไขแบบง่าย ถ้าเงื่อนไขใน if[] ประเมินผลเป็น true โค้ดบล็อก if จะถูกดำเนินการ
ตัวอย่าง:
#!/bin/bash
read -p "Enter a number: " mynumber
if [ $mynumber -gt 10 ]
then
echo "The number you entered is greater than 10"
fi
หมายเหตุ: ในตัวอย่างข้างต้น ถ้าเรากรอกตัวเลขน้อยกว่า 10 จะไม่มีอะไรพิมพ์ออกมา
ตัวอย่าง Bash if-else
เมื่อผลลัพธ์ของเงื่อนไข if เป็น false โค้ดในบล็อก else จะถูกดำเนินการ ถ้ามีบล็อก else
ตัวอย่าง:
#!/bin/bash
read -p "Enter a number: " mynumber
if [ $mynumber -gt 10 ]
then
echo "The number you entered is greater than 10"
else
echo "The number you entered is less than 10"
fi
ตัวอย่าง Bash if-elif-else
elif (else if) ใช้เมื่อมีเงื่อนไข if หลายเงื่อนไข
ตัวอย่าง:
#!/bin/bash
read -p "Enter your exam grade: " grade
if [ $grade -ge 80 ]
then
echo "You got A"
elif [ $grade -ge 70 ]
then
echo "You got B"
elif [ $grade -ge 60 ]
then
echo "You got C"
else
echo "Fail"
fi
ตัวอย่าง Bash Nested if
เรายังสามารถมีคำสั่ง if แบบซ้อนกัน (nested) ได้
ตัวอย่าง:
#!/bin/bash
read -p "Enter value of a :" a
read -p "Enter value of b :" b
read -p "Enter value of c :" c
if [ $a -gt $b ]
then
if [ $a -gt $c ]
then
echo "a is greatest"
else
echo "c is greatest"
fi
else
if [ $b -gt $c ]
then
echo "b is greatest"
else
echo "c is greatest"
fi
fi