AWK - ลูป
บทนี้อธิบายการวนซ้ำของ AWK พร้อมตัวอย่างที่เหมาะสม ลูปใช้เพื่อดำเนินการชุดของการดำเนินการในลักษณะซ้ำ ๆ การดำเนินการวนซ้ำจะดำเนินต่อไปตราบเท่าที่เงื่อนไขการวนซ้ำเป็นจริง
สำหรับ Loop
ไวยากรณ์ของ for ห่วงคือ -
ไวยากรณ์
for (initialization; condition; increment/decrement)
action
ในขั้นต้น forคำสั่งดำเนินการเริ่มต้นจากนั้นจะตรวจสอบเงื่อนไข หากเงื่อนไขเป็นจริงจะเรียกใช้การดำเนินการหลังจากนั้นจะดำเนินการเพิ่มหรือลด การดำเนินการวนซ้ำจะดำเนินต่อไปตราบเท่าที่เงื่อนไขเป็นจริง ตัวอย่างเช่นตัวอย่างต่อไปนี้จะพิมพ์ 1 ถึง 5 โดยใช้for วน -
ตัวอย่าง
[jerry]$ awk 'BEGIN { for (i = 1; i <= 5; ++i) print i }'
ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
1
2
3
4
5
ในขณะที่วนซ้ำ
whileลูปยังคงดำเนินการดำเนินการจนกว่าเงื่อนไขทางตรรกะเฉพาะจะประเมินเป็นจริง นี่คือไวยากรณ์ของwhile วน -
ไวยากรณ์
while (condition)
action
AWK ตรวจสอบเงื่อนไขก่อน ถ้าเงื่อนไขเป็นจริงจะเรียกใช้การดำเนินการ กระบวนการนี้จะทำซ้ำตราบเท่าที่เงื่อนไขการวนซ้ำประเมินเป็นจริง ตัวอย่างเช่นตัวอย่างต่อไปนี้จะพิมพ์ 1 ถึง 5 โดยใช้while วน -
ตัวอย่าง
[jerry]$ awk 'BEGIN {i = 1; while (i < 6) { print i; ++i } }'
ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
1
2
3
4
5
Do-While Loop
do-whileลูปคล้ายกับลูป while ยกเว้นว่าเงื่อนไขการทดสอบจะได้รับการประเมินที่ส่วนท้ายของลูป นี่คือไวยากรณ์ของdo-whileวน -
ไวยากรณ์
do
action
while (condition)
ใน do-whileวนซ้ำคำสั่งการดำเนินการจะดำเนินการอย่างน้อยหนึ่งครั้งแม้ว่าคำสั่งเงื่อนไขจะประเมินว่าเป็นเท็จ ตัวอย่างเช่นตัวอย่างต่อไปนี้พิมพ์ 1 ถึง 5 ตัวเลขโดยใช้do-while วน -
ตัวอย่าง
[jerry]$ awk 'BEGIN {i = 1; do { print i; ++i } while (i < 6) }'
ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
1
2
3
4
5
งบพัก
ตามชื่อของมันถูกใช้เพื่อสิ้นสุดการทำงานของลูป นี่คือตัวอย่างที่สิ้นสุดลูปเมื่อผลรวมมีค่ามากกว่า 50
ตัวอย่าง
[jerry]$ awk 'BEGIN {
sum = 0; for (i = 0; i < 20; ++i) {
sum += i; if (sum > 50) break; else print "Sum =", sum
}
}'
ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45
ดำเนินการต่อคำชี้แจง
continueคำสั่งใช้ภายในลูปเพื่อข้ามไปยังการวนซ้ำถัดไปของลูป จะมีประโยชน์เมื่อคุณต้องการข้ามการประมวลผลข้อมูลบางส่วนภายในลูป ตัวอย่างเช่นตัวอย่างต่อไปนี้ใช้continue คำสั่งเพื่อพิมพ์เลขคู่ระหว่าง 1 ถึง 20
ตัวอย่าง
[jerry]$ awk 'BEGIN {
for (i = 1; i <= 20; ++i) {
if (i % 2 == 0) print i ; else continue
}
}'
ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
2
4
6
8
10
12
14
16
18
20
ออกแถลงการณ์
ใช้เพื่อหยุดการทำงานของสคริปต์ ยอมรับจำนวนเต็มเป็นอาร์กิวเมนต์ซึ่งเป็นรหัสสถานะการออกสำหรับกระบวนการ AWK หากไม่มีการโต้แย้งexitส่งคืนสถานะเป็นศูนย์ นี่คือตัวอย่างที่หยุดการดำเนินการเมื่อผลรวมมากกว่า 50
ตัวอย่าง
[jerry]$ awk 'BEGIN {
sum = 0; for (i = 0; i < 20; ++i) {
sum += i; if (sum > 50) exit(10); else print "Sum =", sum
}
}'
เอาต์พุต
ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -
Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45
ให้เราตรวจสอบสถานะการส่งคืนของสคริปต์
ตัวอย่าง
[jerry]$ echo $?
ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
10