- การใช้คำสั่ง “ถ้า”
- การใช้คำสั่ง “If-Else”
- การใช้คำสั่ง “If-Elif-Else”
- การใช้คำสั่ง “If” เพื่อตรวจสอบตัวแปรว่าง
- การใช้คำสั่ง “If” กับตัวดำเนินการเชิงตรรกะ
- การใช้คำสั่ง 'If' แบบซ้อนกัน
- การใช้คำสั่ง 'If' เพื่อตรวจสอบการมีอยู่ของไฟล์
- การใช้คำสั่ง “If” เพื่อตรวจสอบการมีอยู่ของ Directory
- การใช้คำสั่ง “If” กับ Regex
- การใช้คำสั่ง 'กรณี'
การใช้คำสั่ง “ถ้า”
ตัวอย่างนี้แสดงการใช้งานคำสั่ง 'if' ใน Bash อย่างง่าย ตัวดำเนินการเปรียบเทียบหกประเภทสามารถใช้เพื่อเปรียบเทียบค่าตัวเลขใน Bash เหล่านี้คือ '-eq' (เท่ากับ), '-ne' (ไม่เท่ากัน), '-le' (น้อยกว่าเท่ากับ), '-ge' (มากกว่าเท่ากัน), '-lt' (น้อยกว่า) และ ' -gt” (มากกว่า) การใช้ “-lt” และ “-eq” จะแสดงในสคริปต์ต่อไปนี้ว่าตัวเลขนั้นน้อยกว่า 99 หรือไม่ได้ตรวจสอบโดยใช้ตัวดำเนินการ “-lt” ตัวเลขเป็นเลขคู่หรือคี่ และตรวจสอบโดยตัวดำเนินการ '-eq'
#!/bin/bash
#กำหนดค่าตัวเลข
( ( ตัวเลข = ห้าสิบ ) )
#ตรวจสอบค่าตัวเลขโดยใช้คำสั่ง 'if'
ถ้า [ $หมายเลข -lt 99 ]
แล้ว
เสียงสะท้อน 'หมายเลขถูกต้อง'
เป็น
#ตรวจสอบว่าเลขคู่หรือไม่
ถ้า [ $ ( ( $หมายเลข % 2 ) ) -eq 0 ]
แล้ว
เสียงสะท้อน 'ตัวเลขเป็นเลขคู่'
เป็น
เอาท์พุต : :
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ก่อนหน้า:
การใช้คำสั่ง “If-Else”
การใช้คำสั่ง 'if-else' จะแสดงอยู่ในสคริปต์ต่อไปนี้ ค่าสตริงถูกนำมาจากผู้ใช้และตรวจสอบว่าค่าเป็น 'BLUE' หรือไม่โดยใช้คำสั่ง 'if-else'
#!/bin/bash
#รับค่าสตริงจากผู้ใช้
อ่าน -พี 'กรอกสีที่คุณชื่นชอบ:' สี
#ตรวจสอบค่าสตริงโดยใช้คำสั่ง 'if-else'
ถ้า [ ${สี^^} == 'สีฟ้า' ]
แล้ว
เสียงสะท้อน “ก็ได้ สีฟ้าก็มีจำหน่าย”
อื่น
เสียงสะท้อน ' $สี ไม่สามารถใช้งานได้.'
เป็น
เอาท์พุต : :
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ก่อนหน้าหากใช้ 'สีแดง' เป็นอินพุต:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ก่อนหน้าหากใช้ 'สีน้ำเงิน' เป็นอินพุต:
การใช้คำสั่ง “If-Elif-Else”
การใช้คำสั่ง “if-elif-else” จะแสดงอยู่ในสคริปต์ต่อไปนี้ ผู้ใช้จะนำตัวเลขมาและตรวจสอบด้วยค่าที่แตกต่างกันจนกว่าจะพบค่าที่ตรงกัน หากพบรายการที่ตรงกัน ข้อความที่เกี่ยวข้องจะถูกพิมพ์ หากไม่พบรายการที่ตรงกัน ข้อความเริ่มต้นจะถูกพิมพ์
#!/bin/bash#รับค่า ID จากผู้ใช้
อ่าน -พี 'ป้อนหมายเลขซีเรียลของคุณ:' อนุกรม
#ตรวจสอบค่าอินพุตโดยใช้คำสั่ง 'if-elif-else'
ถ้า [ $อนุกรม == '4523' ]
แล้ว
เสียงสะท้อน 'คุณได้รับเลือกให้อยู่ในกลุ่ม A'
เอลฟ์ [ $อนุกรม == '8723' ]
แล้ว
เสียงสะท้อน “คุณได้รับเลือกให้อยู่ในกลุ่ม B”
เอลฟ์ [ $อนุกรม == '3412' ]
แล้ว
เสียงสะท้อน “คุณได้รับเลือกให้อยู่ในกลุ่ม C”
อื่น
เสียงสะท้อน “คุณไม่ได้ถูกเลือก” .
เป็น
เอาท์พุท:
ผลลัพธ์ต่อไปนี้ปรากฏขึ้นหลังจากรันสคริปต์ด้วยค่า 8723:
ผลลัพธ์ต่อไปนี้ปรากฏขึ้นหลังจากรันสคริปต์ด้วยค่า 9078:
การใช้คำสั่ง “If” เพื่อตรวจสอบตัวแปรว่าง
วิธีการตรวจสอบว่าตัวแปรว่างเปล่าโดยไม่ได้ใช้คำสั่ง “if” จะแสดงอยู่ในสคริปต์ต่อไปนี้ ตัวเลือก '-z' ใช้ในคำสั่ง 'if' เพื่อทำงานนี้
#!/bin/bash#รับค่า ID จากผู้ใช้
อ่าน -พี 'ป้อนหมายเลขซีเรียลของคุณ:' อนุกรม
#ตรวจสอบว่าตัวแปรว่างหรือไม่
ถ้า [ ! -กับ $อนุกรม ]
แล้ว
#ตรวจสอบค่าอินพุตโดยใช้คำสั่ง 'if-elif-else'
ถ้า [ $อนุกรม == '690' ]
แล้ว
เสียงสะท้อน “คุณได้รับเลือกให้อยู่ในทีม 1”
เอลฟ์ [ $อนุกรม == '450' ]
แล้ว
เสียงสะท้อน “คุณได้รับเลือกให้อยู่ในทีม 2”
อื่น
เสียงสะท้อน “คุณไม่ได้ถูกเลือก” .
เป็น
อื่น
เสียงสะท้อน 'ไม่มีการระบุหมายเลขซีเรียล'
เป็น
เอาท์พุต : :
ผลลัพธ์ต่อไปนี้ปรากฏขึ้นหลังจากรันสคริปต์ด้วยค่า 690:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์หากไม่มีค่าอินพุต:
การใช้คำสั่ง “If” กับตัวดำเนินการเชิงตรรกะ
ตัวดำเนินการเชิงตรรกะสามประเภทสามารถใช้ในคำสั่ง Bash แบบมีเงื่อนไขได้ สิ่งเหล่านี้เป็นตรรกะ OR (||) ตรรกะ AND (&&) และตรรกะ NOT (!) ค่ารหัสถูกนำมาจากผู้ใช้ หากค่าอินพุตไม่ว่างเปล่า ค่าจะถูกตรวจสอบด้วยค่าโค้ดสองค่าโดยใช้ตรรกะ OR หากค่าตรงกับรหัสใดๆ ข้อความที่เกี่ยวข้องจะถูกพิมพ์ หากไม่พบรหัสที่ตรงกัน ข้อความเริ่มต้นจะถูกพิมพ์
#!/bin/bash#รับรหัสหลักสูตรจากผู้ใช้
อ่าน -พี 'กรอกรหัสหลักสูตร:' รหัส
#ตรวจสอบว่าตัวแปรว่างหรือไม่
ถ้า [ ! -กับ $รหัส ]
แล้ว
#ตรวจสอบค่าอินพุตโดยใช้คำสั่ง 'if-elif-else'
ถ้า [ [ $รหัส == 'CSE-106' || $รหัส == 'CSE-108' ] ]
แล้ว
เสียงสะท้อน 'หลักสูตรศธ.'
เอลฟ์ [ [ $รหัส == 'บีบีเอ-203' || $รหัส == 'บีบีเอ-202' ] ]
แล้ว
เสียงสะท้อน 'หลักสูตรบีบีเอ'
อื่น
เสียงสะท้อน 'รหัสหลักสูตรไม่ถูกต้อง'
เป็น
อื่น
เสียงสะท้อน 'ไม่มีรหัสหลักสูตรให้'
เป็น
เอาท์พุต : :
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ด้วยค่าอินพุต 'CSE-108':
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ด้วยค่าอินพุต 'BBA-56':
การใช้คำสั่ง 'If' แบบซ้อนกัน
เมื่อใช้เงื่อนไข “if” ภายในเงื่อนไข “if” อื่น จะเรียกว่าคำสั่ง “if” ที่ซ้อนกัน วิธีการใช้คำว่า 'if' แบบซ้อนจะแสดงอยู่ในสคริปต์ต่อไปนี้ ผู้ใช้จะนำค่าเครื่องหมายสองค่าไป หากค่าอินพุตไม่ว่างเปล่า เงื่อนไข 'if' แรกจะตรวจสอบว่าค่าของ '$theory' มากกว่าหรือเท่ากับ 60 หรือไม่ หากเงื่อนไข “if” แรกส่งคืน “true” เงื่อนไข “if” ที่สองจะตรวจสอบว่าค่าของ “$lab” มากกว่าหรือเท่ากับ 50 หรือไม่ หากเงื่อนไข 'if' ที่สองส่งคืน 'true' ด้วย ข้อความแสดงความสำเร็จจะถูกพิมพ์ มิฉะนั้น ข้อความแจ้งข้อผิดพลาดจะถูกพิมพ์ออกมา
#!/bin/bash#เอาเครื่องหมายทฤษฎี
อ่าน -พี 'ป้อนเครื่องหมายทฤษฎี:' ทฤษฎี
#เอาเครื่องหมายแลป
อ่าน -พี 'ป้อนเครื่องหมายห้องปฏิบัติการ:' ห้องปฏิบัติการ
#ตรวจสอบว่าตัวแปรว่างหรือไม่
ถ้า [ [ ! -กับ $ทฤษฎี && ! -กับ $แล็บ ] ]
แล้ว
#ตรวจสอบค่าอินพุตโดยใช้คำสั่ง 'if' ที่ซ้อนกัน
ถ้า [ $ทฤษฎี -ge 60 ]
แล้ว
ถ้า [ $แล็บ -ge ห้าสิบ ]
แล้ว
เสียงสะท้อน 'คุณผ่านไปแล้ว'
อื่น
เสียงสะท้อน 'คุณล้มเหลว'
เป็น
อื่น
เสียงสะท้อน 'คุณล้มเหลว'
เป็น
อื่น
เสียงสะท้อน 'ทฤษฎีหรือเครื่องหมายห้องปฏิบัติการว่างเปล่า'
เป็น
เอาท์พุต : :
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหากค่าอินพุตทั้งสองหรือค่าใดค่าหนึ่งว่างเปล่า:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหากใช้ 78 เป็นเครื่องหมายทางทฤษฎี และ 45 ถือเป็นเครื่องหมายห้องปฏิบัติการ ในที่นี้ เงื่อนไข 'if' ที่สองจะส่งกลับค่า 'false':
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหากใช้ 67 เป็นเครื่องหมายทางทฤษฎี และ 56 ถือเป็นเครื่องหมายห้องปฏิบัติการ ในที่นี้ เงื่อนไข 'if' ทั้งสองเงื่อนไขกลับเป็น 'true':
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหากใช้ 50 เป็นเครื่องหมายทางทฤษฎี และ 80 เป็นเครื่องหมายห้องปฏิบัติการ ที่นี่เงื่อนไข 'if' แรกส่งคืน 'false':
การใช้คำสั่ง 'If' เพื่อตรวจสอบการมีอยู่ของไฟล์
การมีอยู่ของไฟล์สามารถตรวจสอบได้โดยสคริปต์ทุบตีได้สองวิธี รายการหนึ่งใช้โอเปอเรเตอร์ “-f” พร้อมวงเล็บปีกกา “[]” อีกอย่างคือใช้คำสั่ง 'test' และตัวดำเนินการ '-f' ชื่อไฟล์จะถูกนำไปใช้และตรวจสอบการมีอยู่ของไฟล์โดยใช้เงื่อนไข 'if' พร้อมด้วยตัวดำเนินการ '-f' จากนั้น ชื่อไฟล์อื่นจะถูกใช้และตรวจสอบการมีอยู่ของไฟล์โดยใช้คำสั่ง 'if' พร้อมด้วยคำสั่ง 'test' และตัวดำเนินการ '-f'
#!/bin/bash#เอาชื่อไฟล์
อ่าน -พี 'ป้อนชื่อไฟล์:' fn1
#ตรวจสอบว่ามีไฟล์อยู่หรือไม่โดยไม่ต้องใช้ `test`
ถ้า [ -ฉ $fn1 ]
แล้ว
เสียงสะท้อน ' $fn1 แฟ้มที่มีอยู่.'
อื่น
เสียงสะท้อน ' $fn1 ไม่มีไฟล์อยู่'
เป็น
#เพิ่มบรรทัดใหม่
เสียงสะท้อน
#ใช้ชื่อไฟล์อื่น
อ่าน -พี 'ป้อนชื่อไฟล์อื่น:' fn2
#ตรวจสอบว่ามีไฟล์อยู่หรือไม่โดยใช้ 'ทดสอบ'
ถ้า ทดสอบ -ฉ $fn2 ; แล้ว
เสียงสะท้อน ' $fn2 แฟ้มที่มีอยู่.'
#ตรวจสอบว่าไฟล์ว่างเปล่าหรือไม่โดยใช้ `test`
ถ้า ทดสอบ -กับ $fn2 ; แล้ว
เสียงสะท้อน ' $fn2 ไฟล์ว่างเปล่า'
อื่น
เสียงสะท้อน ' $fn2 ไฟล์ไม่ว่างเปล่า'
เป็น
อื่น
เสียงสะท้อน ' $fn2 ไม่มีไฟล์อยู่'
เป็น
เอาท์พุต : :
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากการรันสคริปต์โดยใช้ “test.txt” และ “testing.txt” เป็นชื่อไฟล์ ตามผลลัพธ์ ทั้งสองไฟล์มีอยู่ในตำแหน่งปัจจุบัน และไฟล์ “testing.txt” ว่างเปล่า:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากการรันสคริปต์โดยใช้ “f1.txt” และ “test.txt” เป็นชื่อไฟล์ ตามผลลัพธ์ที่ได้ ไฟล์ “f1.txt” ไม่มีอยู่ในตำแหน่งปัจจุบัน และไฟล์ “test.txt” ไม่ว่างเปล่า:
การใช้คำสั่ง “If” เพื่อตรวจสอบการมีอยู่ของ Directory
การมีอยู่ของไดเร็กทอรีสามารถตรวจสอบได้ด้วยสคริปต์ Bash ได้สองวิธีเช่นเดียวกับไฟล์ รายการหนึ่งใช้โอเปอเรเตอร์ “-d” พร้อมวงเล็บปีกกา “[]” อีกประการหนึ่งคือการใช้คำสั่ง 'test' และตัวดำเนินการ '-d' ชื่อไดเร็กทอรีจะถูกใช้และตรวจสอบการมีอยู่ของไดเร็กทอรีโดยใช้เงื่อนไข 'if' พร้อมด้วยตัวดำเนินการ '-d' จากนั้น ชื่อไดเร็กทอรีอื่นจะถูกใช้และตรวจสอบการมีอยู่ของไฟล์โดยใช้คำสั่ง 'if' พร้อมด้วยคำสั่ง 'test' และตัวดำเนินการ '-d'
#!/bin/bash#รับจดชื่อไดเร็กทอรี
อ่าน -พี 'ป้อนชื่อไดเรกทอรี:' คุณ1
#ตรวจสอบว่ามีไดเร็กทอรีอยู่หรือไม่โดยไม่ต้องใช้ `test`
ถ้า [ -d $dir1 ]
แล้ว
เสียงสะท้อน ' $dir1 มีไดเร็กทอรีอยู่'
อื่น
เสียงสะท้อน ' $dir1 ไม่มีไดเรกทอรีอยู่'
เป็น
#เพิ่มบรรทัดใหม่
เสียงสะท้อน
#ใช้ชื่อไดเรกทอรีอื่น
อ่าน -พี 'ป้อนชื่อไดเรกทอรีอื่น:' dir2
#ตรวจสอบว่ามีไฟล์อยู่หรือไม่โดยใช้ 'ทดสอบ'
ถ้า ทดสอบ -d $dir2
แล้ว
เสียงสะท้อน ' $dir2 มีไดเร็กทอรีอยู่'
อื่น
เสียงสะท้อน ' $dir2 ไม่มีไดเรกทอรีอยู่'
เป็น
เอาท์พุต : :
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ด้วยชื่อไดเร็กทอรี 'temp' และ 'files' ตามผลลัพธ์ ทั้งสองไดเร็กทอรีมีอยู่ในตำแหน่งปัจจุบัน จากนั้นคำสั่ง “ls” จะถูกดำเนินการเพื่อตรวจสอบเนื้อหาของไดเร็กทอรี:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ด้วยชื่อไดเร็กทอรี 'testing' และ 'new' ตามผลลัพธ์ ทั้งสองไดเร็กทอรีไม่มีอยู่ในตำแหน่งปัจจุบัน จากนั้น ผลลัพธ์ของคำสั่ง “ls” จะแสดงว่าไม่มีทั้งสองไดเร็กทอรี:
การใช้คำสั่ง “If” กับ Regex
สคริปต์ต่อไปนี้แสดงวิธีการตรวจสอบข้อมูลอินพุตโดยใช้คำสั่ง 'if' กับ regex ในที่นี้ ค่าอินพุตสองค่าจะถูกดึงมาจากผู้ใช้และจัดเก็บไว้ในตัวแปร “$bookname” และ “$bookprice” เงื่อนไข 'if' ถูกใช้ในสคริปต์เพื่อตรวจสอบว่าตัวแปร '$bookname' มีอักขระที่เป็นตัวอักษรทั้งหมด และ '$bookprice' มีตัวเลข
#!/bin/bash#เอาชื่อหนังสือและราคาจากผู้ใช้
เสียงสะท้อน -n 'กรอกชื่อหนังสือ:'
อ่าน ชื่อหนังสือ
เสียงสะท้อน -n 'กรอกราคาหนังสือ:'
อ่าน ราคาหนังสือ
#ตรวจสอบชื่อหนังสือมีตัวอักษรเท่านั้น
ถ้า ! [ [ ' $ชื่อหนังสือ ' =~ [ อา-ซ่า-ซ ] ] ] ; แล้ว
เสียงสะท้อน 'ชื่อหนังสือไม่ถูกต้อง'
อื่น
เสียงสะท้อน 'ชื่อหนังสือถูกต้อง'
เป็น
#ตรวจสอบราคาหนังสือมีเฉพาะตัวเลขเท่านั้น
ถ้า ! [ [ ' $ราคาหนังสือ ' =~ [ 0 - - 9 ] ] ] ; แล้ว
เสียงสะท้อน 'ราคาหนังสือต้องเป็นตัวเลขเท่านั้น'
อื่น
เสียงสะท้อน 'ราคาหนังสือถูกต้อง'
เป็น
เอาท์พุต : :
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ด้วยค่าอินพุตของ 'Bash Programming' เป็นชื่อหนังสือและ 78 เป็นราคาหนังสือ:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์โดยมีค่าอินพุต 90 เป็นชื่อหนังสือและ 'Bash' เป็นราคาหนังสือ:
การใช้คำสั่ง 'กรณี'
คำสั่ง 'case' เป็นทางเลือกหนึ่งของคำสั่ง 'if-elif-else' แต่งานทั้งหมดของคำสั่ง 'if-elif-else' ไม่สามารถทำได้โดยใช้คำสั่ง 'case' การใช้คำสั่ง 'case' อย่างง่ายจะแสดงอยู่ในสคริปต์ต่อไปนี้ ค่าตัวเลขจะถูกนำมาจากผู้ใช้เป็นค่าเดือนปัจจุบัน จากนั้น เดือนที่เกี่ยวข้องจะถูกพิมพ์หากพบค่าที่ตรงกันในคำสั่ง 'case' มิฉะนั้น ข้อความเริ่มต้นจะถูกพิมพ์
#!/bin/bash#เอาค่าเดือนปัจจุบันเป็นตัวเลข
อ่าน -พี 'ป้อนเดือนวันนี้เป็นตัวเลข:' ข_เดือน
#พิมพ์ข้อความก่อนพิมพ์ชื่อเดือน
เสียงสะท้อน -n “ชื่อเดือนปัจจุบันคือ”
#ค้นหาและพิมพ์ชื่อเดือนที่ตรงกันตามข้อมูลที่ป้อน
กรณี $b_เดือน ใน
1 | 01 ) เสียงสะท้อน 'มกราคม.' ;;
2 | 02 ) เสียงสะท้อน 'กุมภาพันธ์.' ;;
3 | 03 ) เสียงสะท้อน 'มีนาคม.' ;;
4 | 04 ) เสียงสะท้อน 'เมษายน.' ;;
5 | 05 ) เสียงสะท้อน 'อาจ.' ;;
6 | 06 ) เสียงสะท้อน 'มิถุนายน.' ;;
7 | 07 ) เสียงสะท้อน 'กรกฎาคม.' ;;
8 | 08 ) เสียงสะท้อน 'สิงหาคม.' ;;
9 | 09 ) เสียงสะท้อน 'กันยายน.' ;;
10 ) เสียงสะท้อน 'ตุลาคม.' ;;
สิบเอ็ด ) เสียงสะท้อน 'พฤศจิกายน.' ;;
12 ) เสียงสะท้อน 'ธันวาคม.' ;;
* ) เสียงสะท้อน 'ไม่พบ.' ;;
อีแซค
เอาท์พุต : :
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ด้วยค่า 6:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ด้วยค่า 09:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ด้วยค่า 14:
บทสรุป
การใช้ตรรกะแบบมีเงื่อนไขที่แตกต่างกันโดยใช้คำสั่ง 'if' และ 'case' จะแสดงอยู่ใน 10 ตัวอย่างของบทช่วยสอนนี้ แนวคิดของการใช้ตรรกะแบบมีเงื่อนไขใน Bash จะถูกล้างสำหรับผู้ใช้ Bash ใหม่หลังจากอ่านบทช่วยสอนนี้