ตัวอย่าง Linux Shell Script ของ BASH 'for' Loop
สิ่งที่ต้องรู้
- ในทุบตี สำหรับ วนซ้ำประโยคทั้งหมดระหว่าง ทำ และ เสร็จแล้ว จะดำเนินการหนึ่งครั้งสำหรับทุกรายการในรายการหรือช่วงตัวเลข
- ด้วยรายการใหญ่ ใช้ ใน {list} เพื่อวนซ้ำระหว่างจุดเริ่มต้นและจุดสิ้นสุด ใช้จุดไข่ปลาเพื่อวนซ้ำช่วงจำนวนเต็ม เช่น สำหรับหมายเลขใน {1..10}.
- หากต้องการข้ามตัวเลขบางตัว ให้เพิ่มตัวเลขที่สามในช่วง ตัวอย่างเช่น ใช้ {0..100..10} เพื่อแสดงรายการทุก ๆ ตัวเลขที่ 10
ในภาษาโปรแกรมหรือภาษาสคริปต์ Bash เสนอวิธีการทำซ้ำโค้ดหลายวิธี ซึ่งเรียกว่าการวนซ้ำ โดยที่ a สำหรับ วนซ้ำบางส่วนของรหัส ซึ่งช่วยให้ชุดคำสั่งทำงานจนกว่าจะตรงตามเงื่อนไขเฉพาะ ในคู่มือนี้เราจะแสดงวิธีเขียน Bash สำหรับ ห่วง.
วิธีการวนซ้ำรายการ
ภาษาสคริปต์ เช่น Bash มีโครงสร้างการเขียนโปรแกรมที่คล้ายคลึงกับภาษาอื่นๆ ตัวอย่างเช่น นำเข้าพารามิเตอร์ รับข้อมูลจากแป้นพิมพ์ และเก็บอินพุตเหล่านี้เป็นตัวแปร ซึ่งจากนั้น ดำเนินการบางอย่างตามค่าของพารามิเตอร์อินพุต.
พิจารณาสคริปต์ตัวอย่างง่ายๆ ที่ชื่อว่า loop.sh:
#!/bin/bash
สำหรับตัวเลขใน 1 2 3 4 5
ทำ
echo $number
เสร็จแล้ว
ทางออก 0
วิธีการใช้ทุบตี สำหรับ ลูปค่อนข้างแตกต่างจากวิธีจัดการภาษาโปรแกรมและภาษาสคริปต์อื่น สำหรับ ลูป มาทำลายสคริปต์กันเถอะ
ในทุบตี สำหรับ วนซ้ำคำสั่งทั้งหมดระหว่าง ทำ และ เสร็จแล้ว จะดำเนินการเพียงครั้งเดียวสำหรับทุกรายการในรายการ ในตัวอย่างนี้ รายการคือทุกอย่างที่มาหลังคำว่า ใน-ตัวเลข 1 2 3 4 5.
ทุกครั้งที่วนซ้ำ ค่าถัดไปในรายการจะถูกแทรกลงในตัวแปรที่ระบุหลังคำว่า สำหรับ. ในลูปข้างต้น ตัวแปรจะถูกเรียก ตัวเลข.
NS เสียงก้อง คำสั่งแสดงข้อมูลไปยังหน้าจอ ดังนั้น ตัวอย่างนี้จะนำตัวเลข 1 ถึง 5 และส่งออกตัวเลขแต่ละตัวไปที่หน้าจอ:

วิธีการวนรอบระหว่างจุดเริ่มต้นและจุดสิ้นสุด
ปัญหาของสคริปต์ loop.sh นี้คือ หากคุณต้องการประมวลผลรายการที่ใหญ่ขึ้น (เช่น 1 ถึง 500) การพิมพ์ตัวเลขทั้งหมดจะใช้เวลานาน ให้ระบุจุดเริ่มต้นและจุดสิ้นสุดแทน:
#!/bin/bash
สำหรับหมายเลขใน {1..10}
ทำ
เสียงสะท้อน "$ หมายเลข"
เสร็จแล้ว
ทางออก 0
กฎเกณฑ์ก็เหมือนกัน ค่าหลังคำว่า ใน สร้างรายการที่จะวนซ้ำและแต่ละค่าในรายการจะถูกวางไว้ในตัวแปร (นั่นคือตัวเลข) และทุกครั้งที่วนซ้ำวนซ้ำคำสั่งระหว่าง ทำ และ เสร็จแล้ว จะดำเนินการ
ความแตกต่างที่สำคัญคือวิธีการสร้างรายการ วงเล็บปีกกาแสดงถึงช่วง และช่วงในกรณีนี้คือ 1 ถึง 10 (จุดสองจุดแยกจุดเริ่มต้นและจุดสิ้นสุดของช่วง)
ตัวอย่างนี้จึงวิ่งผ่านแต่ละตัวเลขระหว่าง 1 ถึง 10 และส่งออกตัวเลขไปยังหน้าจอ
วงเดียวกันสามารถเขียนแบบนี้ได้กับ ไวยากรณ์ เหมือนกับตัวอย่างแรก:
สำหรับตัวเลขใน 1 2 3 4 5 6 7 8 9 10
วิธีข้ามตัวเลขในช่วง
ตัวอย่างก่อนหน้านี้แสดงวิธีการวนรอบระหว่างจุดเริ่มต้นและจุดสิ้นสุด ต่อไปนี้คือวิธีข้ามตัวเลขในช่วง
ตัวอย่างเช่น หากต้องการวนซ้ำระหว่าง 0 ถึง 100 แต่แสดงทุก ๆ หมายเลขสิบเท่านั้น ให้ใช้สคริปต์ต่อไปนี้เพื่อรับผลลัพธ์นี้:
#!/bin/bash
สำหรับตัวเลขใน {0..100..10}
ทำ
เสียงสะท้อน "$ หมายเลข"
เสร็จแล้ว
ทางออก 0
กฎเกณฑ์ก็เหมือนกัน มีรายการ ตัวแปร และชุดคำสั่งที่จะดำเนินการระหว่าง ทำ และ เสร็จแล้ว. รายการในครั้งนี้มีลักษณะดังนี้: {0..100..10}.
หมายเลขแรกคือ 0 และหมายเลขสิ้นสุดคือ 100 หมายเลขที่สาม (10) คือจำนวนรายการในรายการที่จะข้ามไป
ตัวอย่างข้างต้นจึงแสดงผลลัพธ์ต่อไปนี้:

ตัวอย่างการปฏิบัติ
สำหรับลูปทำมากกว่าทำซ้ำรายการตัวเลข ตัวอย่างเช่น ใช้ผลลัพธ์ของคำสั่งอื่นเป็นรายการ
ตัวอย่างต่อไปนี้แสดงวิธีการแปลงไฟล์เสียงจาก MP3 ถึง WAV:
#!/bin/bash
สำหรับไฟล์ใน ./*.mp3
ทำ
mpg -w ./wavs/"${file}".wav "$file"
เสร็จแล้ว
รายการในตัวอย่างนี้คือทุกไฟล์ที่มีนามสกุล .MP3 ในโฟลเดอร์ปัจจุบัน และตัวแปรคือไฟล์
คำสั่ง mpg แปลงไฟล์ MP3 เป็น WAV อย่างไรก็ตาม คุณอาจต้องติดตั้งเครื่องมือนี้โดยใช้ตัวจัดการแพ็คเกจก่อน