Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

วิธีใช้ “if… else” ใน Bash Scripts (พร้อมตัวอย่าง)

การเขียนสคริปต์ทุบตีเป็นเครื่องมือสำคัญสำหรับนักพัฒนาในการทำงานอัตโนมัติใน Linux

สคริปต์ทุบตีสามารถใช้เพื่อทำให้งานการพัฒนาในเครื่องเป็นแบบอัตโนมัติได้ (เช่น การอัปโหลดไฟล์สำหรับการปรับใช้ รวบรวมแอป หรือการปรับขนาดรูปภาพจำนวนมาก) เช่นเดียวกับงานฝั่งเซิร์ฟเวอร์ (การส่งอีเมลตามกำหนดเวลา รวบรวมข้อมูลตามช่วงเวลา หรือส่งการแจ้งเตือนไปยังอุปกรณ์ )

คุณจะต้องการเรียกใช้งานบางอย่างโดยขึ้นอยู่กับผลลัพธ์ของงานหรือตัวแปรอื่น และนั่นคือที่ที่ ถ้า … อื่น จะช่วยคุณ. กระบวนการตัดสินใจในสคริปต์ทุบตีนี้เรียกโดยใช้เงื่อนไข .

บทแนะนำนี้จะให้รายละเอียดและตัวอย่างการใช้งานสำหรับ if… else คำสั่งใน Bash

การใช้ if คำชี้แจง

คำสั่ง if อย่างง่ายจะดำเนินการกระทำการที่มีอยู่หากเงื่อนไขเป็นจริง และมีลักษณะดังนี้:

if CONDITIONS; then
    ACTIONS
fi

ตัวอย่างแบบเต็ม:

#!/bin/bash
if [ 2 -lt 3 ]; then
    echo "2 is less than 3!"
fi

โปรดทราบว่า:

  • สคริปต์ทุบตีทั้งหมดเริ่มต้นด้วยบรรทัด #!/bin/bash
  • The -lt ตัวดำเนินการตรวจสอบว่าค่าแรกน้อยกว่าค่าที่สองหรือไม่ หากเราต้องการตรวจสอบว่าค่าที่ 2 มากกว่าค่าแรก เราจะใช้ -gt
  • อ่านต่อเพื่อดูรายการตัวดำเนินการเชิงตรรกะเพิ่มเติม
  • เรากำลังใช้ เสียงสะท้อน คำสั่งเพื่อส่งออกข้อความไปยังบรรทัดคำสั่ง
  • ถ้า ข้อความลงท้ายด้วย fi . เสมอ เพื่อยุติพวกเขา

การใช้ อื่น คำชี้แจง

หากคุณต้องการดำเนินการตามชุดเงื่อนไข แล้วจึงดำเนินการอย่างอื่น เท่านั้น หากเงื่อนไขเหล่านั้นล้มเหลว คุณสามารถใช้ อื่น คำสั่ง:

#!/bin/bash
echo -n "Enter number: "
read number
if [ $number -lt 3 ]; then
    echo "$number is less than 3!"
else
    echo "$number is not less than 3!"
fi

โปรดทราบว่า:

  • เรายังคงใช้องค์ประกอบเดียวกันกับด้านบนเพื่อเปรียบเทียบค่าและการแสดงผลข้อความ
  • เรากำลังใช้ อ่าน คำสั่งรับข้อมูลจากผู้ใช้
  • เราใช้ตัวแปรเพื่อเก็บค่าไว้ใช้ในภายหลัง

การใช้ เอลฟ์ (หากเป็นอย่างอื่น) คำชี้แจง

หากต้องการตรวจสอบเงื่อนไขหลายชุดและดำเนินการต่างกันหากการทดสอบแต่ละรายการเป็นจริง ให้ใช้ elif (หรือถ้า) คำสั่ง:

#!/bin/bash
echo -n "Enter number: "
read number
if [ $number -lt 3 ]; then
    echo "$number is less than 3!"
elif [ $number -eq 3]; then
    echo "$number is equal to 3!"
else
    echo "$number is not less than 3!"
fi

หลายเงื่อนไขใน ถ้า คำชี้แจง

หากคุณมีเงื่อนไขหลายข้อที่ต้องการตรวจสอบ คุณสามารถใช้ && (และ ) และ || (หรือ ) โอเปอเรเตอร์เพื่อตัดสินใจว่าควรดำเนินการหรือไม่

#!/bin/bash
echo -n "Enter number: "
read number
if [[ $number -lt 3 ]] && [[ $number -lt 0 ]]; then
    echo "$number is less than three and is negative"
elif [[ $number -lt 3 ]] || [[ $number -gt 6 ]]; then
    echo "$number is not negative, but is less than 3 or greater than 6"
else
    echo "$number is greater than3 and less than 6"
fi

การซ้อนคำสั่ง

คุณสามารถวาง ถ้า ข้อความภายในอื่นๆ ถ้า คำชี้แจง:

#!/bin/bash
echo -n "Enter number: "
read number
if [$number -gt 3]; then
    echo "$number is greater than 3"
    if [$number -gt 6]; then
        echo "$number is also greater than 6"
    else
        echo "$number is not also greater than 6"
    fi
fi

ตัวดำเนินการเปรียบเทียบ

ในตัวอย่างข้างต้น เราได้ใช้ -lt (น้อยกว่า), -gt (มากกว่า) และ = (เท่ากับ) ตัวดำเนินการ ต่อไปนี้คือตัวดำเนินการเชิงตรรกะอื่นๆ ที่ใช้กันทั่วไป:

การเปรียบเทียบตัวเลข

$number1 -eq $number2 : Returns true if the variables are equal
$number1 -gt $number2 : Returns true if $number1 is greater than $number2
$number1 -ge $number2 : Returns true if $number1 is equal to or greater than $number2
$number1 -lt $number2 : Returns true if $number1 is less than $number2
$number1 -le $number2 : Returns true if $number1 is equal to or less than $number2

การเปรียบเทียบสตริง

$string1 = $string2 : Returns true if $string1 and $string2 are equal
$string1 != $string2 : Returns true if $string1 and $string2 are not equal

ดังที่แสดงด้านบน เมื่อต้องการย้อนกลับผลลัพธ์ของนิพจน์การเปรียบเทียบ ให้วาง ! (NOT) โอเปอเรเตอร์ที่อยู่ข้างหน้า เช่น *!=หมายถึง NOT EQUALS

เมื่อเปรียบเทียบสตริง ให้ใส่เครื่องหมายคำพูดคู่เสมอเพื่อไม่ให้ ของคุณตีความช่องว่างใดๆ ผิด สคริปต์ทุบตี

คุณควรห่อตัวแปรที่มีสตริงในเครื่องหมายคำพูดเพื่อให้แน่ใจว่าจะไม่ตีความผิด:

#!/bin/bash
echo -n "Enter string: "
read string
if ["$string" = "hello there!"]
    echo "You said hello there!"
fi

การตรวจสอบสถานะของไฟล์หรือไดเร็กทอรี

-d $filepath : Returns true if the $filepath exists and is a directory
-e $filepath : Returns true if the $filepath exists regardless of whether it's a file or directory
-f $filepath : Returns true if the $filepath exists and is a file
-h $filepath : Returns true if the $filepath exists and is a symbolic link
-r $filepath : Returns true if the $filepath exists and is readable
-w $filepath : Returns true if the $filepath exists and is writable
-x $filepath : Returns true if the $filepath exists and is executable

บทสรุป

การสร้างสคริปต์ทุบตีของคุณเองสามารถช่วยคุณประหยัดเวลาได้มาก และเขียนได้ค่อนข้างง่ายเมื่อคุณทราบพื้นฐานการสร้างพื้นฐานแล้ว

ถ้า… อื่น คำสั่งช่วยให้คุณควบคุมวิธีที่สคริปต์ของคุณตอบสนองต่อการป้อนข้อมูลของผู้ใช้หรือสถานะของไฟล์

ดูบทความ Bash อื่นๆ ของเราเพื่อเรียนรู้เพิ่มเติม!