Shell Scripting - For Loops
สารบัญ:
- Bash มาตรฐานสำหรับวนรอบ
- วนรอบสตริง
- วนรอบช่วงตัวเลข
- วนรอบองค์ประกอบของอาร์เรย์
- Bash สไตล์ C สำหรับลูป
- ทำลายและดำเนินการต่องบ
- งบแบ่ง
- ดำเนินการต่องบ
- Bash สำหรับตัวอย่างลูป
- การเปลี่ยนชื่อไฟล์ด้วยช่องว่างในชื่อไฟล์
- การเปลี่ยนนามสกุลไฟล์
- ข้อสรุป
ลูปเป็นหนึ่งในแนวคิดพื้นฐานของภาษาโปรแกรม ลูปมีประโยชน์เมื่อคุณต้องการเรียกใช้ชุดคำสั่งซ้ำแล้วซ้ำอีกจนกว่าจะถึงเงื่อนไขที่แน่นอน
ในภาษาสคริปต์เช่น Bash ลูปจะมีประโยชน์สำหรับการทำงานซ้ำ ๆ โดยอัตโนมัติ
มีการสร้างลูปพื้นฐานสามแบบในการเขียนสคริปต์ Bash สำหรับการวนซ้ำในขณะที่วนซ้ำและจนกว่าจะวนซ้ำ
ในบทช่วยสอนนี้เราจะกล่าวถึงพื้นฐานของลูปใน Bash นอกจากนี้เราจะแสดงให้คุณเห็นถึงวิธีการใช้ตัวแบ่งและคำสั่งต่อไปเพื่อเปลี่ยนการไหลของลูป
Bash มาตรฐานสำหรับวนรอบ
สำหรับวนซ้ำทุกรายการและดำเนินการชุดคำสั่งที่กำหนด
Bash for loop ใช้แบบฟอร์มต่อไปนี้:
for item in do done
รายการสามารถเป็นชุดของสตริงที่คั่นด้วยช่องว่างช่วงของตัวเลขเอาต์พุตของคำสั่งอาร์เรย์และอื่น ๆ
วนรอบสตริง
ในตัวอย่างด้านล่างลูปจะวนซ้ำแต่ละไอเท็มในรายการสตริงและ
element
ตัวแปรจะถูกตั้งค่าเป็นไอเท็มปัจจุบัน
for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done
ลูปจะสร้างเอาต์พุตต่อไปนี้:
Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium
วนรอบช่วงตัวเลข
คุณสามารถใช้นิพจน์ลำดับเพื่อระบุช่วงของตัวเลขหรือตัวอักษรโดยกำหนดจุดเริ่มต้นและจุดสิ้นสุดของช่วง นิพจน์ลำดับนั้นใช้แบบฟอร์มต่อไปนี้:
{START..END}
ในตัวอย่างด้านล่างการวนซ้ำจะวนซ้ำตัวเลขทั้งหมดตั้งแต่ 0 ถึง 3
for i in {0..3} do echo "Number: $i" done
Number: 0 Number: 1 Number: 2 Number: 3
เริ่มต้นจาก Bash 4 เป็นไปได้ที่จะระบุการเพิ่มเมื่อใช้ช่วง การแสดงออกใช้แบบฟอร์มต่อไปนี้:
{START..END..INCREMENT}
for i in {0..20..5} do echo "Number: $i" done
Number: 0 Number: 5 Number: 10 Number: 15 Number: 20
วนรอบองค์ประกอบของอาร์เรย์
นอกจากนี้คุณยังสามารถใช้ for เพื่อวนซ้ำองค์ประกอบต่างๆ:
ในตัวอย่างด้านล่างเราจะกำหนดอาร์เรย์
BOOKS
และวนซ้ำองค์ประกอบของอาร์เรย์
BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done
Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby
Bash สไตล์ C สำหรับลูป
ไวยากรณ์ของ C-style สำหรับลูปกำลังใช้รูปแบบต่อไปนี้:
for ((INITIALIZATION; TEST; STEP)) do done
ส่วน
INITIALIZATION
จะดำเนินการเพียงครั้งเดียวเมื่อวงเริ่ม จากนั้นจะทำการประเมินส่วนของการ
TEST
หากเป็นเท็จการ for loop จะถูกยกเลิก หากการ
TEST
เป็นจริงคำสั่งภายในเนื้อความของสำหรับลูปจะถูกดำเนินการและส่วนที่มีการปรับปรุง
ในรหัสต่อไปนี้วงดาวโดยเริ่มต้น
i = 0
จากนั้นก่อนการตรวจสอบซ้ำแต่ละครั้งถ้า
i ≤ 10
หากเป็นจริงมันพิมพ์ค่าปัจจุบันของ
i
และ
i
ด้วย 1 (
i++
) มิฉะนั้นการวนซ้ำจะสิ้นสุดลง
for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done
ลูปจะวนซ้ำ 1001 ครั้งและสร้างเอาต์พุตต่อไปนี้:
Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000
ทำลายและดำเนินการต่องบ
สามารถใช้คำสั่ง break และ continue เพื่อควบคุมการดำเนินการลูป
งบแบ่ง
คำสั่ง break จะยกเลิกลูปปัจจุบันและส่งการควบคุมโปรแกรมไปยังคำสั่งที่ตามหลังคำสั่งที่ถูกยกเลิก โดยปกติจะใช้เพื่อยุติการวนซ้ำเมื่อเงื่อนไขตรง
ในตัวอย่างต่อไปนี้เราใช้คำสั่ง if เพื่อยุติการดำเนินการของลูปเมื่อรายการที่ทำซ้ำในปัจจุบันมีค่าเท่ากับ 'ลิเธียม'
for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'
Element: Hydrogen Element: Helium All Done!
ดำเนินการต่องบ
คำสั่ง continue ออกจากการวนซ้ำปัจจุบันของลูปและส่งการควบคุมโปรแกรมไปที่การวนซ้ำครั้งถัดไปของลูป
ในตัวอย่างต่อไปนี้เรากำลังวนซ้ำตามช่วงของจำนวนและเมื่อรายการที่วนซ้ำในปัจจุบันมีค่าเท่ากับ '2' คำสั่ง continue จะทำให้การดำเนินการกลับไปที่จุดเริ่มต้นของลูปและดำเนินการซ้ำต่อไป
for i in {1..5}; do if]; then continue fi echo "Number: $i" done
Number: 1 Number: 3 Number: 4 Number: 5
Bash สำหรับตัวอย่างลูป
การเปลี่ยนชื่อไฟล์ด้วยช่องว่างในชื่อไฟล์
ตัวอย่างต่อไปนี้แสดงวิธีใช้ Bash สำหรับการวนซ้ำเพื่อเปลี่ยนชื่อไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันด้วยช่องว่างในชื่อโดยแทนที่ช่องว่างเป็นขีดล่าง
for file in *\ *; do mv "$file" "${file// /_}" done
มาแยกย่อยบรรทัดโค้ดทีละบรรทัด:
- บรรทัดแรกสร้างห่วงสำหรับและวนซ้ำรายการของไฟล์ทั้งหมดที่มีช่องว่างในชื่อ นิพจน์
*\ *
สร้างรายการบรรทัดที่สองใช้กับแต่ละไอเท็มของรายการและย้ายไฟล์ไปที่อันใหม่แทนที่พื้นที่ด้วยเครื่องหมายขีดล่าง (_
) ส่วน${file// /_}
กำลังใช้การขยายพารามิเตอร์เชลล์เพื่อแทนที่รูปแบบภายในพารามิเตอร์ด้วยสตริงdone
ระบุถึงจุดสิ้นสุดของส่วนลูป
การเปลี่ยนนามสกุลไฟล์
ตัวอย่างต่อไปนี้แสดงวิธีใช้ Bash for loop เพื่อเปลี่ยนชื่อไฟล์ทั้งหมดที่ลงท้ายด้วย. jpeg ในไดเรกทอรีปัจจุบันโดยแทนที่นามสกุลไฟล์จาก. jpeg เป็น. jpg
for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done
ลองวิเคราะห์โค้ดทีละบรรทัด:
- บรรทัดแรกสร้างห่วงสำหรับวนซ้ำและทำซ้ำผ่านรายการของไฟล์ทั้งหมดที่ลงท้ายด้วย '.jpeg' บรรทัดที่สองจะใช้กับแต่ละรายการของรายการและย้ายไฟล์ไปยังไฟล์ใหม่แทนที่ '.jpeg' ด้วย '.jpg'.
${file%.jpeg}
เพื่อลบส่วน '.jpeg' ออกจากชื่อไฟล์โดยใช้การขยายพารามิเตอร์ของเชลล์done
บ่งบอกถึงจุดสิ้นสุดของเซ็กเมนต์ลูป
ข้อสรุป
ถึงตอนนี้คุณควรมีความเข้าใจที่ดีเกี่ยวกับวิธีใช้ bash for loop เพื่อวนซ้ำตามรายการต่างๆ
bash loop terminalถ้าคุณหวังว่าจะได้รับหลักฐานเพิ่มเติมเกี่ยวกับแท็บเล็ตแอ็ปเปิ้ลจริงวันนี้คุณจะได้รับความต้องการของคุณ The New York Times กล่าวว่า Michael Tchao ซึ่งเป็นหนึ่งในผู้นำด้านแพลตฟอร์มนิวตันของ Apple ล้มเหลวที่จะกลับไปที่ 1 Infinite Loop ในวันจันทร์นี้ ไม่มีใครรู้ว่าหน้าที่แท้จริงของ Tchao มี แต่การพิจารณาประสบการณ์ก่อนหน้านี้ของเขาเกี่ยวกับรูปแบบแท็บเล็ตบางอย่างอาจคาดเดาได้ว่า Tchao จะช่วยให้แอปเปิ้ลสามารถหาแนวทางในการทำตลาดแท็บเล็ตที่เป็นตำนานได้

ชื่อใหม่ของ Tchao ที่ Apple เป็นรองประธาน ของการตลาดผลิตภัณฑ์และเขารายงานโดยตรงกับฟิลชิลเลอร์รองประธานอาวุโสฝ่ายการตลาดผลิตภัณฑ์ทั่วโลก ก่อนร่วมงานกับแอ็ปเปิ้ล Tchao ได้ทำงานในตำแหน่ง General Manager ของ Nike Techlab ซึ่งได้พัฒนาเกียร์เช่นเดียวกับผู้เล่นตัวจริงของ Nike Plus ที่คอยติดตามสถิติการออกกำลังกายของคุณและจัดเก็บข้อมูลดังกล่าวไว้ใน iPod iPod รุ่นที่เลือก
การเรียกใช้ Bash on Ubuntu บน Windows 10

การเปิดใช้งาน Windows Subsystem for Linux จะทำให้คุณสามารถเรียกใช้ Bash บน Ubuntu บน Windows 10, สคริปต์ Bash , เครื่องมือบรรทัดคำสั่ง Linux, เครื่องมือ Linux แรกก่อน
Bash: ต่อท้ายไฟล์

ใน Linux มีหลายวิธีในการต่อท้ายข้อความในไฟล์ บทความนี้จะอธิบายบางส่วนของพวกเขา