เช่นเดียวกับภาษาสคริปต์อื่นๆ Bash ก็มีการสนับสนุนลูป (loops)
ลูปเหมาะสำหรับงานที่ทำซ้ำๆ เราสามารถใช้ for loop และ while loop ในสคริปต์ Bash ของเราได้
Bash For Loop
ไวยากรณ์ของ for loop คือ:
for VARIABLE in PARAM1 PARAM2 PARAM3
do
// ขอบเขตของ for loop
done
For loop จะทำงานสำหรับแต่ละพารามิเตอร์ พารามิเตอร์อาจเป็นตัวเลข ช่วงตัวเลข หรือสตริง ฯลฯ
ตัวอย่าง Bash For Loop
ตัวอย่างง่ายนี้พิมพ์ตัวเลข 1 ถึง 5 โดยใช้ for loop:
#!/bin/bash
for i in 1 2 3 4 5
do
echo "$i"
done
ผลลัพธ์:
1
2
3
4
5
Bash For Loop - พิมพ์ช่วงตัวเลข
เราสามารถกำหนดช่วงตัวเลขให้วนลูปได้:
ตัวอย่าง:
for i in {1..5}
do
echo "$i"
done
ผลลัพธ์:
1
2
3
4
5
Bash วนลูปผ่านสตริง
เราสามารถใช้ for loop วนลูปผ่านพารามิเตอร์แบบสตริงได้:
#!/bin/bash
for day in MON TUE WED THU FRI SAT SUN
do
echo "$day"
done
ผลลัพธ์:
MON
TUE
WED
THU
FRI
SAT
SUN
Bash For Loop - รูปแบบ C Style
เราสามารถใช้ไวยากรณ์แบบ C เขียน for loop ได้ เช่น:
#!/bin/bash
for ((i=1; i<=5; i++))
do
echo "$i"
done
ผลลัพธ์:
1
2
3
4
5
For Loop แสดงรายการไฟล์ในไดเรกทอรีปัจจุบัน
เพื่อแสดงไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันด้วย bash for loop เราใช้:
#!/bin/bash
for fname in ./
do
ls -l $fname
done
Bash While Loop
Bash รองรับ while loop ด้วย While loop จะดำเนินการชุดคำสั่งจนกว่าเงื่อนไขจะประเมินผลเป็น true
ไวยากรณ์สำหรับ Bash while loop คือ:
while [condition]
do
// ดำเนินการคำสั่ง
done
เงื่อนไขจะถูกประเมินก่อนดำเนินการคำสั่งใดๆ ดังนั้น จำเป็นต้องมีวิธีอัปเดตเงื่อนไข มิฉะนั้นลูปจะทำงานตลอดไป (infinite loop)
ตัวอย่าง Bash While Loop
ตัวอย่าง while loop แบบง่ายที่พิมพ์ตัวเลข 1 ถึง 5 ลูปจะจบเมื่อตัวเลขมากกว่า 5:
#!/bin/bash
num=1
while [ $num -le 5 ]
do
echo "$num"
let num++
done
Bash C-Style While Loop
เหมือน for loop เราสามารถเขียน bash while loop แบบ C-style ได้:
#!/bin/bash
num=1
while((num <= 5))
do
echo $num
let num++
done