ในบทความนี้ เราจะดูวิธีใช้ break และ continue ใน Bash Scripts ใน Bash มี Loop Constructs หลัก 3 แบบ (for, while, until) Break และ Continue Statements เป็น Bash Builtin ใช้เปลี่ยน Flow ของ Loops คอนเซปต์นี้มีในภาษายอดนิยมอย่าง Python เช่นกัน
$ type -a break continue
ออกจาก Loop ด้วย Break Statement
Break Statement จะออกจาก Loop และส่ง Control ไปยัง Statement ถัดไปใน Loop คุณรันคำสั่ง help เพื่อดูข้อมูลเกี่ยว break ได้
$ help break
Syntax พื้นฐานของ break:
$ break [n] # n เป็น Optional
ดูตัวอย่างด้านล่าง For Loop เรียบง่าย Iterate ค่าจาก 1 ถึง 20 Step 2 เงื่อนไขจะ Evaluate Expression และเมื่อ True ($val = 9) จะรัน Break Statement และ Loop จะจบ ข้าม Iterations ที่เหลือ
#!/usr/bin/bash
for val in {1..20..2}
do
if [[ $val -eq 9 ]]
then
break
else
echo "printing ${val}"
fi
done
ข้าม Iteration ด้วย Continue Statement
ถ้าคุณไม่อยากออกจาก Loop ทั้งหมด แต่อยากข้าม Block ของโค้ดเมื่อเงื่อนไขเป็นจริง ทำได้ด้วย Continue Statement Continue จะข้ามการ Execute Code Block เมื่อเงื่อนไขเป็นจริง และส่ง Control กลับไป Loop Statement สำหรับ Iteration ถัดไป
ดู Help:
$ help continue
ดูตัวอย่างเดียวกับ Break ตอนนี้เมื่อ Val เป็น 9 Continue จะข้ามโค้ดที่เหลือและส่ง Control ไป For Loop สำหรับ Iteration ถัดไป
#!/usr/bin/bash
for val in {1..20..2}
do
if [[ $val -eq 9 ]]
then
continue
fi
echo "printing ${val}"
done
ถ้ารู้ Python แล้ว Break และ Continue พฤติกรรมเหมือนกันใน Python แต่ Python มี Loop Control Statement อีกตัวคือ Pass
Pass เหมือน Null Statement Interpreter จะอ่านแต่ไม่ทำ Operation ใดๆ แค่ No Operation Bash ไม่มี Statement คล้ายกันแต่เรา Emulate ได้ด้วย True Keyword หรือ Colon (:) ทั้ง True และ Colon เป็น Shell Builtin และไม่ทำ Operation ใดๆ
$ type -a : true
ดูตัวอย่างด้านล่าง เมื่อ Conditional Statement Evaluate เป็น True ($val = 9) แล้ว True Statement ไม่ทำอะไร Loop จะดำเนินต่อ
#!/usr/bin/bash
for val in {1..20..2}
do
if [[ $val -eq 9 ]]
then
true
fi
echo "printing ${val}"
done
ขอจบเพียงเท่านี้สำหรับบทความนี้ เรายินดีรับฟีดแบ็กและเคล็ดลับจากคุณ