คำสั่ง Bash 'if else': บทช่วยสอนและตัวอย่าง

การใช้คำสั่ง if…else ใน Bash สำหรับการประมวลผลโค้ดแบบมีเงื่อนไข

Bash (Bourne Again Shell) เป็นพรอมต์คำสั่งเชลล์และภาษาสคริปต์ในระบบปฏิบัติการ GNU/Linux เป็นเชลล์เริ่มต้นสำหรับลีนุกซ์ส่วนใหญ่.

คำสั่งแบบมีเงื่อนไขมีความสำคัญในภาษาการเขียนโปรแกรมใดๆ ที่คอมไพล์แล้ว เช่นเดียวกับสคริปต์ พวกเขาอนุญาตให้ผู้ใช้รันโค้ดตามเงื่อนไขที่กำหนดไว้ล่วงหน้า ซึ่งเป็นหนึ่งในพื้นฐานของตรรกะการเขียนโปรแกรม ในบทความนี้ เราจะมาเรียนรู้วิธีการใช้งาน ถ้า...อย่างอื่น คำสั่งเงื่อนไขใน Bash

บทนำ

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

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

ไวยากรณ์ทั่วไป

ไวยากรณ์ทั่วไปสำหรับ ถ้า...อย่างอื่น คำสั่งใน Bash คือ:

ถ้าอย่างนั้น  อื่น  fi

ที่นี่ถ้า เป็นไปตามนั้น กล่าวคือ ถ้ามันคืนค่า 0 (สำเร็จ) โค้ดบล็อก 1 จะถูกดำเนินการ หากเงื่อนไขไม่คืนค่า 0 นั่นคือส่งคืนสถานะความล้มเหลว บล็อกโค้ด 2 จะถูกดำเนินการ ดิ ถ้า...อย่างอื่น บล็อกลงท้ายด้วย a fi คำให้การ.

สำหรับหลายบล็อคที่สอดคล้องกับหลายเงื่อนไขเอลฟ์ ถูกนำมาใช้:

ถ้าอย่างนั้น  เอลฟ์แล้ว  เอลฟ์แล้ว  ... ... อื่น  fi

ที่นี่ เงื่อนไขจะถูกตรวจสอบตามลำดับและบล็อกรหัสของเงื่อนไขแรกที่ส่งคืนสถานะ 0 (สำเร็จ) จะถูกดำเนินการ เช่น. ถ้า ส่งคืนสถานะที่ไม่ใช่ศูนย์ (ล้มเหลว) จากนั้น ถูกตรวจสอบ ถ้า ส่งคืนสถานะ 0 ถูกดำเนินการ หลังจากนี้จะไม่มีการตรวจสอบเงื่อนไขเพิ่มเติมและการเรียกใช้โค้ดจะดำเนินต่อไปจนถึงโค้ดหลังจาก fi คำให้การ.

หากไม่มีเงื่อนไขส่งคืนสถานะ 0 ในบล็อกอื่นจะถูกดำเนินการ โปรดทราบว่าบล็อกอื่นเป็นทางเลือก ถ้าไม่เป็นไปตามเงื่อนไขก็ไม่มี อื่น บล็อกถูกระบุ ไม่มีการบล็อกโค้ดแบบมีเงื่อนไข และการดำเนินการโค้ดจะดำเนินต่อไปยังโค้ดหลังจาก fi คำสั่งดังแสดงในโฟลว์กราฟด้านล่าง

โปรดทราบว่า แล้ว คำสั่งจะใช้หลังจาก .เท่านั้น ถ้า และ เอลฟ์ คำสั่งและไม่จำเป็นหลังจาก อื่น คำให้การ.

ตัวอย่าง

เพื่อรันโค้ดบล็อค ถ้าตัวแปรมีค่าเฉพาะ:

x=0 ถ้า [ $x -eq 0 ] แล้ว echo "ค่าของ X คือ 0" อย่างอื่น echo "ค่าของ X ไม่ใช่ 0" fi

วิธีตรวจสอบค่าหลายค่า:

x=2 ถ้า [ $x -eq 0 ] แล้ว echo "ค่าของ X คือ 0" elif [ $x -eq 1 ] แล้ว echo "ค่าของ X คือ 1" elif [ $x -eq 2 ] แล้วก้องสะท้อน "ค่าของ X คือ 2" อย่างอื่น echo "ค่าของ X ไม่ใช่ 0" fi

เงื่อนไขสามารถเป็นคำสั่ง Linux ใดก็ได้ บล็อกรหัสที่เกี่ยวข้องจะทำงานหากคำสั่งทำงานสำเร็จ

ถ้า npm -v แล้ว echo "NPM มีอยู่ในระบบ" มิฉะนั้น sudo apt install npm fi

ในตัวอย่างข้างต้น เนื่องจาก npm ไม่ได้ติดตั้งในระบบคำสั่ง npm -v ส่งคืนสถานะที่ไม่ใช่ศูนย์ ดังนั้นการเรียกใช้โค้ดจึงเข้าสู่ อื่น บล็อกที่เราติดตั้ง npm โดยใช้ ฉลาด ผู้จัดการแพ็คเกจ อย่างที่เราเห็น มันเตือนให้ฉันป้อนรหัสผ่านและเริ่มการติดตั้ง npm

เราก็ทำรังได้อีก ถ้า...อย่างอื่น บล็อกภายใน an ถ้า, อื่น หรือ เอลฟ์ บล็อก:

x=0 y=1 ถ้า [ $x -eq 0 ] แล้ว echo "X คือ 0" ถ้า [ $y -eq 1 ] แล้ว echo "Y คือ 1" อย่างอื่น echo "Y ไม่ใช่ 1" fi อื่น echo "X คือ ไม่ใช่ 0" fi

สิ่งนี้มีประโยชน์เมื่อต้องตรวจสอบชุดเงื่อนไขแยกต่างหากเมื่อเงื่อนไขเริ่มต้นเป็นไปตามเงื่อนไขที่กำหนด

ตัวอย่างเช่น รหัสต่อไปนี้พยายามติดตั้งซอฟต์แวร์เว็บเซิร์ฟเวอร์:

หาก nginx -v echo "ติดตั้ง NGINX แล้ว" อย่างอื่นถ้า sudo apt ติดตั้ง nginx แล้ว echo "การติดตั้ง NGINX สำเร็จ" elif sudo apt ติดตั้ง apache2 จากนั้น echo "การติดตั้ง APACHE2 สำเร็จ" อื่น ๆ echo "ไม่สามารถติดตั้งซอฟต์แวร์เว็บใด ๆ ได้" fi

รหัสจะตรวจสอบก่อนว่า Nginx ติดตั้งอยู่ในระบบแล้วหรือไม่ ถ้าใช่ ก็จะแสดงข้อความและออก หากไม่เป็นเช่นนั้น จะพยายามติดตั้ง Nginx

หากไม่สามารถติดตั้ง Nginx ในระบบจากแพ็คเกจได้ด้วยเหตุผลบางประการ ระบบจะพยายามติดตั้ง Apache2 หากแม้แต่ Apache2 เกิดข้อผิดพลาดขณะติดตั้ง มันจะออกจากการแสดงข้อความว่าไม่สามารถติดตั้งซอฟต์แวร์ได้

ในทำนองเดียวกัน สามารถใช้บล็อกแบบซ้อนภายใน an เอลฟ์ บล็อคเช่นกัน

กำลังดำเนินการ ถ้า...อย่างอื่น: สคริปและ Command Line

คล้ายกับรหัส Bash ใด ๆ the ถ้า...อย่างอื่น คำสั่งสามารถใช้ใน Bash shell โดยตรงหรือจากไฟล์เชลล์สคริปต์ที่เรียกทำงานได้ เมื่อล่าม Bash พบ an ถ้า, อื่น หรือ เอลฟ์ คำสั่ง มันต่อเชลล์เพื่อให้ผู้ใช้ป้อนบล็อกรหัส

ผู้ใช้ยังสามารถบันทึกโค้ดนี้ในไฟล์สคริปต์และรันไฟล์สคริปต์ได้

ดิ #!/bin/bash ที่จุดเริ่มต้นระบุล่ามที่จะใช้เมื่อไฟล์ถูกดำเนินการ แม้ว่า Bash จะเป็นเชลล์ที่ใช้กันมากที่สุดในปัจจุบัน แต่ผู้ใช้บางคนชอบเชลล์เช่น zsh ซึ่งควรระบุแทน bash ที่จุดเริ่มต้นของไฟล์นี้

หากต้องการให้สิทธิ์ดำเนินการสำหรับไฟล์นี้ ให้เรียกใช้:

chmod +x test.sh

สุดท้าย ในการรันไฟล์ ให้รัน:

./test.sh

บทสรุป

คล้ายกับภาษาโปรแกรมใด ๆ ถ้า...อย่างอื่น คำสั่งเป็นคุณสมบัติพื้นฐานของ Bash การเรียนรู้การใช้งานเป็นหนทางยาวไกลในการเขียนสคริปต์พื้นฐานและสคริปต์ขั้นสูง