สำหรับ ลูปเป็นเครื่องมือที่มีประโยชน์เมื่อเขียนสคริปต์ทุบตีสำหรับการทำงานซ้ำสำหรับไฟล์ ระเบียน หรือค่าอื่นๆ
คำสั่ง for จะวนซ้ำรายการค่า โดยดำเนินการกับแต่ละรายการจนกว่ารายการทั้งหมดจะได้รับการประมวลผล
กรณีการใช้งานรวมถึงการวนซ้ำไฟล์ในไดเร็กทอรี บรรทัดในไฟล์ข้อความ หรือเอาต์พุตของการสืบค้นฐานข้อมูล
Bash สำหรับไวยากรณ์ลูป
for VARIABLE in LIST do COMMANDS done
ที่ไหน:
- VARIABLE คือชื่อตัวแปรที่จะกำหนดให้กับแต่ละรายการใน LIST เมื่อมันถูกประมวลผลโดยคำสั่ง
- LIST สามารถมีได้หลายรูปแบบ ดูตัวอย่างด้านล่าง
ตัวอย่าง Bash For Loop
สำหรับ ลูปสามารถวนซ้ำทับรายการที่กำหนดไว้ล่วงหน้าหรือรายการที่สร้างจากเอาต์พุตของสคริปต์อื่นหรือแอปพลิเคชันบรรทัดคำสั่ง
วนซ้ำในช่วงของตัวเลขด้วย สำหรับ วนซ้ำ
กำลังประมวลผลแต่ละหมายเลขในช่วง (เพิ่มขึ้นทีละ 1) โดยใช้ {START…END} :
for num in {0..10} do echo "I'm counting to 10 and I'm up to $num" done
โปรดทราบว่า:
- แต่ละรายการในรายการจะได้รับชื่อตัวแปร num.
- เข้าถึงได้ภายหลังในสคริปต์โดยใช้ $num.
- การวนซ้ำช่วงตัวเลขนั้นรองรับใน Bash เวอร์ชัน 3 ขึ้นไปเท่านั้น
- ตัวเลขที่จะวนซ้ำจะเริ่มต้นด้วยตัวเลขที่จุดเริ่มต้นของวงเล็บปีกกาและวิ่งไปที่ตัวเลขในตอนท้าย เพิ่มขึ้นทีละ 1
ก้าว เหนือตัวเลขและเพิ่มขึ้น 3 – เพื่อให้มีการประมวลผลเพียงทวีคูณของ 3 – โดยใช้ {START…END…INCREMENT} :
for num in {0..15..3} do echo "$num is a multiple of 3!" done
โปรดทราบว่า:
- ตัวเลขที่สามถูกเพิ่มลงในนิพจน์ในวงเล็บปีกกา
- การดำเนินการนี้จะดำเนินการกับตัวเลขตั้งแต่ 0 ถึง 15 โดยเพิ่มขึ้นทีละ 3
- การวนซ้ำในช่วงที่มีการเพิ่มขึ้นแบบกำหนดเองนั้นรองรับใน Bash เวอร์ชัน 4 ขึ้นไปเท่านั้น
วนซ้ำรายการสตริงด้วย สำหรับ วนซ้ำ
คุณยังสามารถวนซ้ำรายการค่าสตริง:
for car in Ford, Holden, Honda, BMW, Ferrari do echo "I wish I could drive a $car" done
วนซ้ำในอาร์เรย์ด้วย สำหรับ วนซ้ำ
อาร์เรย์สามารถประกาศเป็นตัวแปรได้ก่อนที่จะวนซ้ำค่าในอาร์เรย์:
FRUITS=('Apple' 'Pear' 'Orange' 'Strawberry') for fruit in "${FRUITS[@]}" do echo "$fruit is delicious" done
วนซ้ำบนไฟล์ (และเอาต์พุตอื่นๆ) ด้วย สำหรับ วนซ้ำ
คุณยังสามารถวนซ้ำผลลัพธ์ของคำสั่งบรรทัดคำสั่งอื่นๆ:
for f in * do echo "Filename is $f" done
พัก
พัก คำสั่งจะออกจากลูป ณ จุดที่กำหนด:
for num in {0..15..3} do echo "$num is a multiple of 3!" if [[ "$num" == '9' ]] then break fi done echo 'Finished counting at 9!'
ต่อ
ที่ ดำเนินการต่อ คำสั่งจะหยุดรันโค้ดในการวนซ้ำปัจจุบันของลูป (ข้ามไปทั้งหมด) และ ดำเนินการต่อ ในการทำซ้ำครั้งต่อไป:
for num in {0..15..3} do if [[ "$num" == '6' ]] then continue fi echo "$num is a multiple of 3!" done echo 'The number 6 was skipped!'
บทสรุป
การใช้ลูปขณะเขียนสคริปต์จะช่วยคุณประหยัดเวลาและช่วยให้คุณเขียนสคริปต์ที่ยืดหยุ่นได้ ซึ่งสามารถประมวลผลไฟล์และข้อมูลได้โดยอัตโนมัติโดยไม่ต้องป้อนข้อมูลด้วยตนเอง
ดูบทความอื่น ๆ ของเราสำหรับเคล็ดลับการเขียนสคริปต์ทุบตีเพิ่มเติม!