Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

Loop For และ While ใน Bash: ตัวอย่างปฏิบัติและไวยากรณ์

เช่นเดียวกับภาษาสคริปต์อื่นๆ 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