วิธีการเขียน BASH "สำหรับ" Loop

วิธีการใช้ BASH "for" loop ในเชลล์สคริปต์

BASH (ซึ่งย่อมาจาก Bourne Again Shell) เป็นภาษาสคริปต์ที่ใช้โดย ระบบปฏิบัติการลีนุกซ์ และยูนิกซ์มากที่สุด

คุณสามารถเรียกใช้คำสั่ง BASH ภายในหน้าต่างเทอร์มินัลได้จากเมนูอื่นหรือคุณสามารถเพิ่มคำสั่งลงในไฟล์ข้อความเพื่อสร้างสคริปต์เชลล์ได้

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

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

ส่วนสำคัญของการเขียนโปรแกรมและภาษาสคริปต์คือความสามารถในการเรียกใช้โค้ดชิ้นเดียวกันซ้ำ ๆ กัน

มีหลายวิธีที่จะทำซ้ำรหัส (หรือที่เรียกว่าลูป) ในคู่มือนี้คุณจะเห็นวิธีการเขียนลูป "for"

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

ในคู่มือนี้คุณจะได้รับห้าวิธีในการใช้ลูปสำหรับภายในสคริปต์ BASH

ก่อนที่จะเริ่มต้นใช้งาน

ก่อนที่คุณจะเริ่มต้นใช้งานตัวอย่างลูปสำหรับลูปคุณต้องเปิดหน้าต่างเทอร์มินัลและทำตามขั้นตอนต่อไปนี้:

  1. ป้อน สคริปต์ mkdir ( เรียนรู้เพิ่มเติมเกี่ยวกับ mkdir ที่นี่ )
  2. ป้อน สคริปต์ cd (ซึ่ง จะเปลี่ยนไดเรกทอรี ไปเป็น สคริปต์ )
  3. ป้อน examplen.sh nano (โดย n คือตัวอย่างที่คุณกำลังทำงานอยู่)
  4. ป้อนสคริปต์
  5. กด CTRL + O เพื่อบันทึกและ CTRL + X เพื่อออก
  6. เรียกใช้ bash examplen.sh (อีกครั้งโดย n เป็นตัวอย่างที่คุณกำลังทำงานด้วย)

วิธีวนผ่านรายการ

#! / bin / ทุบตี
สำหรับเลขที่ 1 2 3 4 5
ทำ
echo $ number
เสร็จแล้ว
ทางออกที่ 0

วิธี BASH ในการใช้ลูป "for" มีความแตกต่างกันไปบ้างกับการเขียนโปรแกรมและภาษาสคริปต์ส่วนใหญ่จะจัดการกับ "for" loops ลองแบ่งสคริปต์ลง ...

ใน BASH "for" loop ทั้งหมดคำสั่งระหว่าง ทำ และ done จะทำขึ้นหนึ่งครั้งสำหรับทุกรายการในรายการ

ในตัวอย่างข้างต้นรายการคือทุกสิ่งทุกอย่างที่มาหลังจากคำ ใน (เช่น 1 2 3 4 5)

แต่ละครั้งที่วนซ้ำ iterates ค่าถัดไปในรายการถูกแทรกลงในตัวแปรที่ระบุหลังจากคำว่า "for" ในลูปข้างต้นตัวแปรเรียกว่า หมายเลข

คำสั่ง echo ถูกใช้เพื่อแสดงข้อมูลไปยังหน้าจอ

ดังนั้นตัวอย่างนี้ใช้ตัวเลขตั้งแต่ 1 ถึง 5 และส่งผลให้ทีละหน้าไปยังหน้าจอ:

วิธีวนรอบระหว่างจุดเริ่มต้นและจุดสิ้นสุด

ปัญหาเกี่ยวกับตัวอย่างข้างต้นก็คือถ้าคุณต้องการประมวลผลรายการที่ใหญ่กว่า (พูด 1 ถึง 500) จะใช้เวลานานในการพิมพ์ตัวเลขทั้งหมดในครั้งแรก

ซึ่งจะนำเราไปสู่ตัวอย่างที่สองซึ่งจะแสดงวิธีการระบุจุดเริ่มต้นและจุดสิ้นสุด:

#! / bin / ทุบตี
จำนวน {1..10}
ทำ
echo "$ number"
เสร็จแล้ว
ทางออกที่ 0

กฎมีพื้นฐานเหมือนกัน ค่าหลังจากคำว่า " in" สร้างรายชื่อเพื่อทำซ้ำผ่านและแต่ละค่าในรายการจะถูกวางไว้ในตัวแปร (เช่นหมายเลข) และทุกครั้งที่วนซ้ำ iterates งบระหว่าง ทำ และ เสร็จ จะดำเนินการ

ความแตกต่างหลักคือวิธีการสร้างรายการ วงเล็บปีกกา {} จะหมายถึงช่วงและช่วงในกรณีนี้คือ 1 ถึง 10 (จุดทั้งสองจุดจะแยกจุดเริ่มต้นและจุดสิ้นสุดของช่วง)

ตัวอย่างนี้จึงวิ่งผ่านแต่ละหมายเลขระหว่าง 1 ถึง 10 และแสดงผลหมายเลขไปยังหน้าจอดังนี้:

ลูปเดียวกันสามารถเขียนได้เช่นนี้โดยมี ไวยากรณ์ เหมือนกับตัวอย่างแรก:

สำหรับเลขที่ 1 2 3 4 5 6 7 8 9 10

วิธีการข้ามเบอร์ในช่วง

ตัวอย่างก่อนหน้าแสดงวิธีการวนรอบระหว่างจุดเริ่มต้นและจุดสิ้นสุดดังนั้นตอนนี้เราจะดูวิธีข้ามตัวเลขในช่วง

ลองจินตนาการว่าคุณต้องการวนรอบตั้งแต่ 0 ถึง 100 แต่แสดงเฉพาะทุกหมายเลขที่สิบ สคริปต์ต่อไปนี้แสดงวิธีการทำเพียงว่า:

#! / bin / ทุบตี
สำหรับตัวเลขใน {0..100..10}
ทำ
echo "$ number"
เสร็จแล้ว
ทางออกที่ 0

กฎมีพื้นฐานเหมือนกัน มีรายการตัวแปรและชุดคำสั่งที่จะทำระหว่าง ทำ และ ทำ รายการในครั้งนี้มีลักษณะดังนี้: {0..100..10}

หมายเลขแรกคือ 0 และเลขท้ายคือ 100 หมายเลขที่สาม (10) คือจำนวนรายการในรายการที่จะข้าม

ตัวอย่างข้างต้นแสดงผลลัพธ์ต่อไปนี้:

ค้นหาแบบวนซ้ำมากขึ้น

วิธี BASH ในการเขียนลูปจะแปลกเล็กน้อยเมื่อเทียบกับภาษาโปรแกรมอื่น ๆ

อย่างไรก็ตามคุณสามารถเขียนลูปสำหรับรูปแบบที่คล้ายคลึงกับภาษาการเขียนโปรแกรม C เช่นนี้

#! / bin / ทุบตี
for ((number = 1; number <100; number ++))
{
if (($ number% 5 == 0))
แล้วก็
echo "จำนวน $ หารด้วย 5"
Fi
}
ทางออกที่ 0

ลูปเริ่มต้นด้วยการตั้งค่าตัวแปรจำนวนเป็น 1 (number = 1 ) ลูปจะทำให้ iterating ในขณะที่ค่าของจำนวนน้อยกว่า 100 ( number <100 ) ค่าของ จำนวนที่ เปลี่ยนแปลงโดยเพิ่ม 1 ลงในแต่ละครั้งที่ทำซ้ำ ( จำนวน ++ )

ทุกอย่างระหว่างวงเล็บปีกกาจะดำเนินการผ่านการวนซ้ำแต่ละรอบ

บิตระหว่างวงเล็บจะตรวจสอบค่าของ ตัวเลข หารด้วย 5 และเปรียบเทียบส่วนที่เหลือเป็น 0 หากส่วนที่เหลือเป็น 0 จำนวนนั้นจะหารด้วย 5 และจะปรากฏบนหน้าจอ

ตัวอย่างเช่น:

ถ้าคุณต้องการเปลี่ยนขนาดขั้นตอนของการวนซ้ำคุณสามารถแก้ไขหมายเลข ++ เป็น หมายเลข = จำนวน + 2 จำนวน = ตัวเลข + 5 หรือ หมายเลข = จำนวน + 10 เป็นต้น

จำนวนนี้สามารถลดลงเป็น จำนวน + = 2 หรือ จำนวน + = 5

ตัวอย่างการปฏิบัติ

สำหรับลูปสามารถทำมากกว่าการวนซ้ำรายการของตัวเลข คุณสามารถใช้ผลลัพธ์ของคำสั่งอื่น ๆ ตามรายการได้

ตัวอย่างต่อไปนี้แสดงวิธีการแปลงไฟล์เสียงจาก MP3 เป็น WAV :

#! / bin / ทุบตี

รายการในตัวอย่างนี้คือทุกไฟล์ที่มีนามสกุล .MP3 ในโฟลเดอร์ปัจจุบันและตัวแปรเป็น ไฟล์

คำสั่ง mpg แปลงไฟล์ MP3 เป็น WAV อย่างไรก็ตามคุณอาจจำเป็นต้องติดตั้งโดยใช้ตัวจัดการแพคเกจของคุณก่อน