Android

ทุบตีในขณะที่วง

What the Waters Left Behind Trailer 2 (2018) Los Olvidados

What the Waters Left Behind Trailer 2 (2018) Los Olvidados

สารบัญ:

Anonim

ลูปเป็นหนึ่งในแนวคิดพื้นฐานของภาษาโปรแกรม ลูปมีประโยชน์เมื่อคุณต้องการรันชุดคำสั่งจำนวนครั้งจนกว่าจะตรงตามเงื่อนไขเฉพาะ

ในภาษาสคริปต์เช่น Bash ลูปจะมีประโยชน์สำหรับการทำงานซ้ำ ๆ โดยอัตโนมัติ มีโครงสร้างพื้นฐาน 3 แบบในการสร้างสคริปต์ Bash สำหรับการวนซ้ำในขณะที่วนซ้ำและจนกว่าจะวนซ้ำ

บทช่วยสอนนี้อธิบายพื้นฐานของ while ลูปใน Bash รวมถึงการแบ่งและดำเนินการต่อเพื่อเปลี่ยนการไหลของลูป

ทุบตีในขณะที่วง

ในขณะที่วงถูกนำมาใช้เพื่อดำเนินการชุดคำสั่งที่กำหนดจำนวนครั้งที่ไม่รู้จักตราบใดที่เงื่อนไขที่กำหนดประเมินเป็นจริง

Bash ในขณะที่วนรอบใช้แบบฟอร์มต่อไปนี้:

while do done

เงื่อนไขถูกประเมินค่าก่อนเรียกใช้งานคำสั่ง หากเงื่อนไขประเมินเป็นจริงคำสั่งจะถูกดำเนินการ มิฉะนั้นหากเงื่อนไขประเมินว่าเป็นเท็จลูปจะถูกยกเลิกและการควบคุมโปรแกรมจะถูกส่งผ่านไปยังคำสั่งที่ตามมา

ในตัวอย่างด้านล่างในการวนซ้ำแต่ละครั้งลูปจะพิมพ์ค่าปัจจุบันของตัวแปร i และเพิ่มค่าทีละตัวแปร

i=0 while do echo Number: $i ((i++)) done

Tue loop จะวนซ้ำตราบใดที่ i มีค่าน้อยกว่าหรือเท่ากับสอง มันจะสร้างผลลัพธ์ต่อไปนี้:

Number: 0 Number: 1 Number: 2

ไม่มีที่สิ้นสุดในขณะที่วง

การวนซ้ำไม่สิ้นสุดคือการวนซ้ำที่ทำซ้ำไปเรื่อย ๆ และไม่สิ้นสุด หากเงื่อนไขประเมินเป็นจริงเสมอคุณจะได้รับการวนซ้ำไม่สิ้นสุด

ในตัวอย่างต่อไปนี้เรากำลังใช้คำสั่งในตัวซึ่งมักจะส่งกลับจริงเพื่อสร้างวงวนไม่สิ้นสุด นอกจากนี้คุณยังสามารถใช้คำสั่งในตัว true หรือคำสั่งอื่น ๆ ที่ส่งกลับจริง

while: do echo "Press to exit." sleep 1 done while: do echo "Press to exit." sleep 1 done

ขณะที่ลูปด้านบนจะทำงานอย่างไม่มีกำหนด คุณสามารถยกเลิกการวนซ้ำได้โดยกด CTRL+C

นี่คือเทียบเท่าบรรทัดเดียว:

while:; do echo 'Press to exit.'; sleep 1; done while:; do echo 'Press to exit.'; sleep 1; done

อ่านไฟล์ตามบรรทัด

หนึ่งในประเพณีที่พบได้บ่อยที่สุดของ while loop คือการอ่านไฟล์สตรีมข้อมูลหรือตัวแปรทีละบรรทัด

ในตัวอย่างต่อไปนี้ห่วงลูปจะอ่านไฟล์ /etc/passwd ละบรรทัดและพิมพ์แต่ละบรรทัด

file=/etc/passwd while read -r line; do echo $line done < "$file"

แทนที่จะควบคุมการวนลูปในขณะที่มีเงื่อนไขเรากำลังใช้การเปลี่ยนเส้นทางอินพุต ( < "$file" ) เพื่อส่งไฟล์ไปยังการ read ซึ่งเป็นคำสั่งที่ควบคุมการวนซ้ำ ขณะที่ลูปจะทำงานจนกว่าจะอ่านบรรทัดสุดท้าย

เมื่ออ่านไฟล์ทีละบรรทัดให้ใช้การ read ด้วยตัวเลือก -r เพื่อป้องกันแบ็กสแลชเพื่อทำหน้าที่เป็นอักขระเลี่ยง

โดยค่าเริ่มต้นคำสั่ง read trims อักขระช่องว่างนำหน้า / ต่อท้าย (ช่องว่างและแท็บ) ใช้ตัวเลือก IFS= ก่อนที่คำสั่ง read เพื่อป้องกันพฤติกรรมนี้

file=/etc/passwd while IFS= read -r line; do echo $line done < "$file"

ทำลายและดำเนินการต่องบ

สามารถใช้คำสั่ง break และ continue เพื่อควบคุมการทำงานของ while loop

งบแบ่ง

คำสั่ง break จะยกเลิกลูปปัจจุบันและส่งการควบคุมโปรแกรมไปยังคำสั่งที่ตามหลังลูปที่ถูกยกเลิก โดยปกติจะใช้เพื่อยุติการวนซ้ำเมื่อเงื่อนไขตรง

ในตัวอย่างต่อไปนี้การดำเนินการของลูปจะถูกขัดจังหวะเมื่อรายการที่วนซ้ำปัจจุบันมีค่าเท่ากับ 2

i=0 while do echo "Number: $i" ((i++)) if]; then break fi done echo 'All Done!'

Number: 0 Number: 1 All Done!

ดำเนินการต่องบ

คำสั่ง continue ออกจากการวนซ้ำปัจจุบันของลูปและส่งการควบคุมโปรแกรมไปที่การวนซ้ำครั้งถัดไปของลูป

ในรายการด้านล่างเมื่อรายการที่มีการทำซ้ำปัจจุบันมีค่าเท่ากับ 2 คำสั่งดำเนินการต่อจะทำให้การดำเนินการเพื่อกลับไปที่จุดเริ่มต้นของลูปและเพื่อดำเนินการซ้ำต่อไป

i=0 while do ((i++)) if]; then continue fi echo "Number: $i" done echo 'All Done!'

Number: 1 Number: 3 Number: 4 Number: 5 All Done!

ข้อสรุป

ถึงตอนนี้คุณควรมีความเข้าใจที่ดีเกี่ยวกับวิธีใช้ bash ในขณะที่วนซ้ำ

bash loop terminal