การใช้คำสั่ง if…else ใน Bash สำหรับการประมวลผลโค้ดแบบมีเงื่อนไข
Bash (Bourne Again Shell) เป็นพรอมต์คำสั่งเชลล์และภาษาสคริปต์ในระบบปฏิบัติการ GNU/Linux เป็นเชลล์เริ่มต้นสำหรับลีนุกซ์ส่วนใหญ่.
คำสั่งแบบมีเงื่อนไขมีความสำคัญในภาษาการเขียนโปรแกรมใดๆ ที่คอมไพล์แล้ว เช่นเดียวกับสคริปต์ พวกเขาอนุญาตให้ผู้ใช้รันโค้ดตามเงื่อนไขที่กำหนดไว้ล่วงหน้า ซึ่งเป็นหนึ่งในพื้นฐานของตรรกะการเขียนโปรแกรม ในบทความนี้ เราจะมาเรียนรู้วิธีการใช้งาน ถ้า...อย่างอื่น
คำสั่งเงื่อนไขใน Bash
บทนำ
ดิ ถ้า...อย่างอื่น
คำสั่งใน Bash ให้ผู้ใช้จัดการการไหลของรหัสตามเงื่อนไข ผู้ใช้สามารถระบุบล็อคโค้ดแยกกันที่จะรันได้ โดยจะมีเพียงหนึ่งบล็อคเท่านั้นที่จะถูกดำเนินการระหว่างรันไทม์ โดยขึ้นอยู่กับเงื่อนไขที่สอดคล้องกันซึ่งเป็นที่พอใจ
โปรดทราบว่าสามารถระบุเงื่อนไขได้มากกว่าสองเงื่อนไข ซึ่ง เอลฟ์
สามารถใช้คำสั่งได้ ผู้ใช้สามารถกำหนดเงื่อนไขจำนวนเท่าใดก็ได้โดยใช้ เอลฟ์
และสุดท้ายเงื่อนไขเริ่มต้นโดยใช้ อื่น
บล็อก. มาดูเพิ่มเติมเกี่ยวกับเรื่องนี้ในไวยากรณ์และตัวอย่างด้านล่าง
ไวยากรณ์ทั่วไป
ไวยากรณ์ทั่วไปสำหรับ ถ้า...อย่างอื่น
คำสั่งใน Bash คือ:
ถ้าอย่างนั้น อื่น fi
ที่นี่ถ้า เป็นไปตามนั้น กล่าวคือ ถ้ามันคืนค่า 0 (สำเร็จ) โค้ดบล็อก 1 จะถูกดำเนินการ หากเงื่อนไขไม่คืนค่า 0 นั่นคือส่งคืนสถานะความล้มเหลว บล็อกโค้ด 2 จะถูกดำเนินการ ดิ
ถ้า...อย่างอื่น
บล็อกลงท้ายด้วย a fi
คำให้การ.
สำหรับหลายบล็อคที่สอดคล้องกับหลายเงื่อนไขเอลฟ์
ถูกนำมาใช้:
ถ้าอย่างนั้น เอลฟ์แล้ว เอลฟ์แล้ว ... ... อื่น fi
ที่นี่ เงื่อนไขจะถูกตรวจสอบตามลำดับและบล็อกรหัสของเงื่อนไขแรกที่ส่งคืนสถานะ 0 (สำเร็จ) จะถูกดำเนินการ เช่น. ถ้า หากไม่มีเงื่อนไขส่งคืนสถานะ 0 โปรดทราบว่า เพื่อรันโค้ดบล็อค ถ้าตัวแปรมีค่าเฉพาะ: วิธีตรวจสอบค่าหลายค่า: เงื่อนไขสามารถเป็นคำสั่ง Linux ใดก็ได้ บล็อกรหัสที่เกี่ยวข้องจะทำงานหากคำสั่งทำงานสำเร็จ ในตัวอย่างข้างต้น เนื่องจาก เราก็ทำรังได้อีก สิ่งนี้มีประโยชน์เมื่อต้องตรวจสอบชุดเงื่อนไขแยกต่างหากเมื่อเงื่อนไขเริ่มต้นเป็นไปตามเงื่อนไขที่กำหนด ตัวอย่างเช่น รหัสต่อไปนี้พยายามติดตั้งซอฟต์แวร์เว็บเซิร์ฟเวอร์: รหัสจะตรวจสอบก่อนว่า Nginx ติดตั้งอยู่ในระบบแล้วหรือไม่ ถ้าใช่ ก็จะแสดงข้อความและออก หากไม่เป็นเช่นนั้น จะพยายามติดตั้ง Nginx หากไม่สามารถติดตั้ง Nginx ในระบบจากแพ็คเกจได้ด้วยเหตุผลบางประการ ระบบจะพยายามติดตั้ง Apache2 หากแม้แต่ Apache2 เกิดข้อผิดพลาดขณะติดตั้ง มันจะออกจากการแสดงข้อความว่าไม่สามารถติดตั้งซอฟต์แวร์ได้ ในทำนองเดียวกัน สามารถใช้บล็อกแบบซ้อนภายใน an คล้ายกับรหัส Bash ใด ๆ the ผู้ใช้ยังสามารถบันทึกโค้ดนี้ในไฟล์สคริปต์และรันไฟล์สคริปต์ได้ ดิ หากต้องการให้สิทธิ์ดำเนินการสำหรับไฟล์นี้ ให้เรียกใช้: สุดท้าย ในการรันไฟล์ ให้รัน: คล้ายกับภาษาโปรแกรมใด ๆ ส่งคืนสถานะที่ไม่ใช่ศูนย์ (ล้มเหลว) จากนั้น
ถูกตรวจสอบ ถ้า
ส่งคืนสถานะ 0
ถูกดำเนินการ หลังจากนี้จะไม่มีการตรวจสอบเงื่อนไขเพิ่มเติมและการเรียกใช้โค้ดจะดำเนินต่อไปจนถึงโค้ดหลังจาก
fi
คำให้การ. ในบล็อกอื่นจะถูกดำเนินการ โปรดทราบว่าบล็อกอื่นเป็นทางเลือก ถ้าไม่เป็นไปตามเงื่อนไขก็ไม่มี
อื่น
บล็อกถูกระบุ ไม่มีการบล็อกโค้ดแบบมีเงื่อนไข และการดำเนินการโค้ดจะดำเนินต่อไปยังโค้ดหลังจาก 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
ถ้า 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
เอลฟ์
บล็อคเช่นกันกำลังดำเนินการ
ถ้า...อย่างอื่น
: สคริปและ Command Lineถ้า...อย่างอื่น
คำสั่งสามารถใช้ใน Bash shell โดยตรงหรือจากไฟล์เชลล์สคริปต์ที่เรียกทำงานได้ เมื่อล่าม Bash พบ an ถ้า
, อื่น
หรือ เอลฟ์
คำสั่ง มันต่อเชลล์เพื่อให้ผู้ใช้ป้อนบล็อกรหัส#!/bin/bash
ที่จุดเริ่มต้นระบุล่ามที่จะใช้เมื่อไฟล์ถูกดำเนินการ แม้ว่า Bash จะเป็นเชลล์ที่ใช้กันมากที่สุดในปัจจุบัน แต่ผู้ใช้บางคนชอบเชลล์เช่น zsh ซึ่งควรระบุแทน bash ที่จุดเริ่มต้นของไฟล์นี้chmod +x test.sh
./test.sh
บทสรุป
ถ้า...อย่างอื่น
คำสั่งเป็นคุณสมบัติพื้นฐานของ Bash การเรียนรู้การใช้งานเป็นหนทางยาวไกลในการเขียนสคริปต์พื้นฐานและสคริปต์ขั้นสูง