เช่นเดียวกับภาษาสคริปต์อื่น ๆ Bash ยังรองรับลูปอีกด้วย
ลูปเหมาะสำหรับการทำงานซ้ำๆ เราสามารถใช้ประโยชน์จาก for loops และ while loops ในสคริปต์ Bash ของเราได้
Bash สำหรับลูป
ไวยากรณ์ของ for loop คือ:
for VARIABLE in PARAM1 PARAM2 PARAM3
do
// scope of for loop
done
for loop จะดำเนินการสำหรับแต่ละพารามิเตอร์ พารามิเตอร์อาจเป็นตัวเลข ช่วงของตัวเลขหรือสตริง เป็นต้น
Bash สำหรับตัวอย่างลูป
ตัวอย่างง่ายๆ นี้พิมพ์ตัวเลข 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
เรายังสามารถใช้รูปแบบ C-style เพื่อเขียน for loop ตัวอย่างเช่น:
#!/bin/bash
for ((i=1; i<=5; i++))
do
echo "$i"
done
เอาท์พุต
1
2
3
4
5
สำหรับการวนซ้ำเพื่อพิมพ์รายการไฟล์ในไดเรกทอรีปัจจุบัน
ในการแสดงรายการไฟล์ทั้งหมดในไดเร็กทอรีปัจจุบันโดยใช้ bash for loop เราใช้:
#!/bin/bash
for fname in ./
do
ls -l $fname
done
ทุบขณะวนซ้ำ
Bash ยังรองรับในขณะที่ลูป ในขณะที่ลูปรันชุดคำสั่งจนกว่าเงื่อนไขจะประเมินเป็นจริง
ไวยากรณ์สำหรับ Bash while loop คือ:
while [condition]
do
//execute instructions
done
เงื่อนไขจะได้รับการประเมินก่อนดำเนินการตามคำสั่งใดๆ ดังนั้นจึงจำเป็นต้องมีวิธีการอัพเดทเงื่อนไข มิฉะนั้น ลูปจะทำงานตลอดไป
Bash ในขณะที่ตัวอย่างลูป
ต่อไปนี้เป็นการวนซ้ำแบบง่ายที่พิมพ์ตัวเลข 1 ถึง 5 การวนซ้ำจะสิ้นสุดลงเมื่อตัวเลขมากกว่า 5
#!/bin/bash
num=1
while [ $num -le 5 ]
do
echo "$num"
let num++
done
ทุบตีสไตล์ C ขณะวนซ้ำ
เช่นเดียวกับ for loop เราสามารถเขียน bash while loop ในภาษา C ได้
ตัวอย่างเช่น:
#!/bin/bash
num=1
while((num <= 5))
do
echo $num
let num++
done