Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

Bash For Loop [พร้อมตัวอย่าง]

สำหรับ ลูปเป็นเครื่องมือที่มีประโยชน์เมื่อเขียนสคริปต์ทุบตีสำหรับการทำงานซ้ำสำหรับไฟล์ ระเบียน หรือค่าอื่นๆ

คำสั่ง for จะวนซ้ำรายการค่า โดยดำเนินการกับแต่ละรายการจนกว่ารายการทั้งหมดจะได้รับการประมวลผล

กรณีการใช้งานรวมถึงการวนซ้ำไฟล์ในไดเร็กทอรี บรรทัดในไฟล์ข้อความ หรือเอาต์พุตของการสืบค้นฐานข้อมูล

Bash สำหรับไวยากรณ์ลูป

for VARIABLE in LIST
do
    COMMANDS
done

ที่ไหน:

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

ตัวอย่าง Bash For Loop

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

วนซ้ำในช่วงของตัวเลขด้วย สำหรับ วนซ้ำ

กำลังประมวลผลแต่ละหมายเลขในช่วง (เพิ่มขึ้นทีละ 1) โดยใช้ {START…END} :

for num in {0..10}
do 
    echo "I'm counting to 10 and I'm up to $num"
done

โปรดทราบว่า:

  • แต่ละรายการในรายการจะได้รับชื่อตัวแปร num.
    • เข้าถึงได้ภายหลังในสคริปต์โดยใช้ $num.
    • การวนซ้ำช่วงตัวเลขนั้นรองรับใน Bash เวอร์ชัน 3 ขึ้นไปเท่านั้น
  • ตัวเลขที่จะวนซ้ำจะเริ่มต้นด้วยตัวเลขที่จุดเริ่มต้นของวงเล็บปีกกาและวิ่งไปที่ตัวเลขในตอนท้าย เพิ่มขึ้นทีละ 1

ก้าว เหนือตัวเลขและเพิ่มขึ้น 3 – เพื่อให้มีการประมวลผลเพียงทวีคูณของ 3 – โดยใช้ {START…END…INCREMENT} :

for num in {0..15..3}
do 
    echo "$num is a multiple of 3!"
done

โปรดทราบว่า:

  • ตัวเลขที่สามถูกเพิ่มลงในนิพจน์ในวงเล็บปีกกา
    • การดำเนินการนี้จะดำเนินการกับตัวเลขตั้งแต่ 0 ถึง 15 โดยเพิ่มขึ้นทีละ 3
  • การวนซ้ำในช่วงที่มีการเพิ่มขึ้นแบบกำหนดเองนั้นรองรับใน Bash เวอร์ชัน 4 ขึ้นไปเท่านั้น

วนซ้ำรายการสตริงด้วย สำหรับ วนซ้ำ

คุณยังสามารถวนซ้ำรายการค่าสตริง:

for car in Ford, Holden, Honda, BMW, Ferrari
do
    echo "I wish I could drive a $car"
done

วนซ้ำในอาร์เรย์ด้วย สำหรับ วนซ้ำ

อาร์เรย์สามารถประกาศเป็นตัวแปรได้ก่อนที่จะวนซ้ำค่าในอาร์เรย์:

FRUITS=('Apple' 'Pear' 'Orange' 'Strawberry')

for fruit in "${FRUITS[@]}"
do
    echo "$fruit is delicious"
done

วนซ้ำบนไฟล์ (และเอาต์พุตอื่นๆ) ด้วย สำหรับ วนซ้ำ

คุณยังสามารถวนซ้ำผลลัพธ์ของคำสั่งบรรทัดคำสั่งอื่นๆ:

for f in *
do
    echo "Filename is $f"
done

พัก

 พัก คำสั่งจะออกจากลูป ณ จุดที่กำหนด:

for num in {0..15..3}
do
    echo "$num is a multiple of 3!"
    if [[ "$num" == '9' ]]
    then
        break
    fi
done
echo 'Finished counting at 9!'

ต่อ

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

for num in {0..15..3}
do
    if [[ "$num" == '6' ]]
    then
        continue
    fi
    echo "$num is a multiple of 3!"
done
echo 'The number 6 was skipped!'

บทสรุป

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

ดูบทความอื่น ๆ ของเราสำหรับเคล็ดลับการเขียนสคริปต์ทุบตีเพิ่มเติม!