วิธีใช้ BASH สำหรับ Loop



ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

หนึ่งในเทคนิคพื้นฐานที่สุดในการเขียนสคริปต์ทุบตีเกี่ยวข้องกับการทำลูปเพื่อให้คุณสามารถทำงานบางอย่างได้โดยอัตโนมัติหลาย ๆ ครั้ง ในที่สุดลูปจะถึงเงื่อนไขการทดสอบที่กำหนดไว้ล่วงหน้าและหยุดดำเนินการทันที ลูปเช่นนี้จะทำงานได้อย่างสมบูรณ์แบบใน bash บน Linux และ macOS รวมถึง bash shell ใน Windows 10 และแม้แต่เชลล์ต่างๆใน FreeBSD โดยปกติคุณสามารถเขียนคำสั่งใดก็ได้ที่คุณต้องการในลูปใดก็ได้และดำเนินการต่อไปในช่วงเวลาที่คุณต้องการ แม้ว่าเราจะเขียนลูปที่เรียบง่าย แต่คุณสามารถใช้ทักษะเหล่านี้ในการเขียนสคริปต์ประเภทใดก็ได้ที่คุณต้องการ



มีหลายวิธีในการเริ่มเขียนสคริปต์ แต่สำหรับการสนทนานี้เราจะถือว่าคุณได้เปิดพรอมต์คำสั่งโดยการค้นหาเทอร์มินัลบน Dash โดยคลิกที่มันในเมนู KDE, MATE, LX หรือ Whisker หรือ โดยกด Ctrl, Alt และ T ค้างไว้พร้อมกัน แม้ว่าเราจะพูดคุยเกี่ยวกับ vi / vim และ nano ในฐานะบรรณาธิการ แต่ปัญหาในการใช้โปรแกรมแก้ไขนั้นค่อนข้างเป็นเรื่องส่วนตัวและคุณสามารถทำงานกับสิ่งที่คุณพอใจได้



วิธีที่ 1: จนกว่าจะวนซ้ำ

บางทีการวนซ้ำขั้นพื้นฐานที่สุดในการทุบตีคือการวนซ้ำจน มันจะดำเนินการคำสั่งต่อไปจนกว่าเงื่อนไขการทดสอบที่คุณตั้งไว้จะกลายเป็นจริง เราจะถือว่าคุณได้ใช้ nano หรือ vi เพื่อเปิดไฟล์ที่ไม่มีอยู่จริงชื่อ until.sh และพร้อมที่จะแทรกข้อความใหม่ลงไป เราจะทำบางอย่างที่นับถึง 20 ในเทอร์มินัลของคุณเพื่อให้ง่ายในตอนแรก



เริ่มต้นด้วยการพิมพ์ดังต่อไปนี้:

#! / bin / ทุบตี

n = 0



จนถึง [$ n -gt 20]

ทำ

เสียงสะท้อน $ n

((n ++))

เสร็จแล้ว

หากคุณใช้นาโนให้บันทึกโดยกด Ctrl ค้างไว้จากนั้นกด O และสุดท้าย X เพื่อออก ผู้ใช้ vi จะต้องกด Escape จากนั้นพิมพ์ wq เพื่อบันทึกและออก

ประเภทถัดไป chmod + x untilLoop ที่พรอมต์เพื่อให้สามารถเรียกใช้งานได้จากนั้นพิมพ์ ./untilLoop เพื่อเรียกใช้ เมื่อทำงานลูปจะพิมพ์ตัวเลขใหม่บนเทอร์มินัลของคุณต่อไปจนกว่าตัวแปร n จะถึง 20

อย่างไรก็ตามบรรทัดแรกจะบอกสภาพแวดล้อมของคุณที่จะโหลดเชลล์เมื่อทำงานกับสคริปต์เหล่านี้ โปรแกรมเมอร์บางคนแนะนำให้ใช้ #! / bin / sh เท่านั้นเพื่อให้แน่ใจว่าสคริปต์ของคุณเป็นไปตามมาตรฐาน POSIX บางอย่าง แต่สคริปต์ง่ายๆเหล่านี้ไม่น่าจะมีปัญหาในการทำงานบนระบบสมัยใหม่ส่วนใหญ่

วิธีที่ 2: สำหรับ Loop

A for loop จะดูทุกรายการในรายการที่กำหนดจากนั้นดำเนินการชุดคำสั่งที่กำหนดในรายการนั้น เราจะสร้างชื่อที่พิมพ์ชื่อระบบปฏิบัติการออกมา แต่โปรดทราบอีกครั้งว่าคุณสามารถทำอะไรก็ได้หากต้องการ

พิมพ์อย่างใดอย่างหนึ่ง นาโน forLoop หรือ เรา forLoop ที่พรอมต์คำสั่งและเริ่มป้อนสคริปต์ต่อไปนี้ ผู้ใช้ vi จะต้องเข้าสู่โหมดแทรกก่อนจึงจะทำได้

#! / bin / ทุบตี

unices = 'GNU / Linux FreeBSD OpenBSD NetBSD Solaris OpenIndiana Darwin HP-UX Minix'

สำหรับ unix ใน $ unices

ทำ

echo $ unix

เสร็จแล้ว

บันทึกไฟล์อีกครั้งโดยใช้วิธี Ctrl + O แล้ว Ctrl + X ใน nano หรือวิธี Esc จากนั้น: wq ใน vi ก่อนออกคำสั่ง chmod + x forLoop เพื่อให้สามารถใช้งานได้ เมื่อคุณมีแล้วให้เรียกใช้โดยพิมพ์ ./forLoop ที่พรอมต์ for loop บังคับให้คำสั่ง echo ทำงานกับแต่ละรายการในตัวแปร unices ตามลำดับ คุณสามารถแทนที่รายการนั้นอีกครั้งด้วยอาร์กิวเมนต์และแทนที่เสียงสะท้อนด้วยคำสั่งใด ๆ เพื่อทำให้กระบวนการที่ยาวเป็นอัตโนมัติ

วิธีที่ 3: The while Loop

เริ่มแก้ไขไฟล์ที่สามชื่อ whileLoop โดยใช้ nano, vi หรือตัวแก้ไขอื่น ๆ ที่คุณต้องการใช้ หากคุณต้องการใช้โปรแกรมแก้ไขข้อความแบบกราฟิกคุณสามารถทำได้เช่นกันกับโปรเจ็กต์เหล่านี้ตราบเท่าที่คุณแน่ใจว่าได้วางไฟล์ไว้ในไดเร็กทอรีเดียวกับที่คุณกำลังทำงานจากภายในพรอมต์คำสั่ง .

ในไฟล์นี้คุณจะต้องเพิ่มบรรทัด:

#! / bin / ทุบตี

n = 0

ในขณะที่ [$ n -le 20]

ทำ

เสียงสะท้อน $ n

((n ++))

เสร็จแล้ว

บันทึกไฟล์แบบเดียวกับที่คุณบันทึกไฟล์อื่น ๆ จากนั้นออกจากโปรแกรมแก้ไขข้อความของคุณ เมื่อคุณออกแล้วให้ออกคำสั่ง chmod + x whileLoop เพื่อให้คุณดำเนินการแล้วเรียกใช้ ./ whileLoop เพื่อเรียกใช้ คุณจะเห็นผลลัพธ์เดียวกันกับที่ออกมาจากสคริปต์ untilLoop จากวิธีแรกเนื่องจากนับจาก 0 ถึง 20 ในเสี้ยววินาที

นี่เป็นการแสดงให้เห็นอย่างดีเยี่ยมว่ามีวิธีทำสิ่งต่างๆมากกว่าหนึ่งวิธีเมื่อใดก็ตามที่คุณทำงานกับลูปในรูปแบบนี้ แม้ว่าในทางเทคนิคจะไม่มีวิธีที่ผิด แต่คุณอาจเจอผู้เขียนสคริปต์ที่อ้างว่าคุณควรเขียนสคริปต์ของคุณให้ใกล้เคียงกับที่ภาษาโปรแกรมซีทำสิ่งต่างๆหรืออีกทางหนึ่ง แต่คนอื่น ๆ อาจแนะนำว่าคุณไม่ควรทำเช่นนี้ จริงๆแล้วอาจมีหลายวิธีที่ถูกต้องในการแก้ปัญหา

อย่าลังเลที่จะลบสคริปต์ของคุณเมื่อคุณฝึกใช้งานเสร็จแล้ว

อ่าน 3 นาที