Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

คำสั่ง If-Else ใน Bash: ไวยากรณ์ที่ชัดเจนและตัวอย่างปฏิบัติ

คำสั่ง 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