Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีใช้คำสั่ง Bash For Loop

หนึ่งในวิธีที่ดีที่สุดทำให้ชีวิตง่ายกับเทคโนโลยี ไม่ว่างานหรือบ้าน คือการใช้ประโยชน์จาก automation การทำให้งานเป็นอัตโนมัติด้วย scripts และ timed jobs เป็นวิธีแน่นอนที่ประหยัดเวลา หัวขี้อี้ และความพยายาม แต่จุดเริ่มต้นไม่ชัดเจน นี่คือวิธีใช้คำสั่ง Bash for loop หนึ่งใน foundational tools ของ IT automation เพื่อเริ่มต้น

ตั้งค่าสภาพแวดล้อมทดสอบ

สิ่งแรกที่ต้องการคือ working instance ของ Bash นี่คือ default shell ใน Terminal ใน Linux, Unix, BSD, และ macOS (เว้นแต่รัน zsh) ตรวจสอบ shell ที่ใช้ด้วยคำสั่ง:

echo $SHELL

ควรพิมพ์ shell ที่ใช้ ผลลัพธ์ของผมบอกว่าใช้ /bin/bash ซึ่งตรงกับที่ต้องการ

ยังต้องการ text editor - editor ใดก็ได้ ผมใช้ Nano ในเทอร์มินัล แตอาจใช้ Vim หรือ Emacs ในเทอร์มินัล หรือ Gedit, Kate, Sublime ใน GUI ก็ได้

สร้างไฟล์สคริปต์ใน text editor ไม่ว่าจะใช้คำสั่ง touch หรือพิมพ์ชื่อ text editor และชื่อไฟล์ที่ต้องการสร้าง สำหรับผม พิมพ์ nano for-loop-test.sh แล้วพร้อม

Bash For Loop: พื้นฐาน

For loop ใน Bash บอก shell ให้ iterate over ช่วงของ objects ที่ระบุ และ execute คำสั่งที่ระบุบน objects นั้นๆ หมายถึงอะไร? คิดว่าแสดงให้ดูง่ายกว่า นี่คือ For loop พื้นฐานมาก:

for i in 1 2 3 4 5
do
    echo "Test round $i"
done

บรรทัดแรก for i in 1 2 3 4 5 ระบุตัวแปร "i" และช่วง 1 ถึง 5 อาจเป็น sequence ตัวเลขซับซ้อนกว่า หรือ list of files หรือ directory

ส่วนต่อไปคือ basic formatting พร้อมคำสั่งที่จะ execute ในส่วนที่ indent do และ done เป็นส่วนของ For loop syntax ต้องมี ถ้ารันสคริปต์นี้ จะได้ output:

Test round 1
Test round 2
Test round 3
Test round 4
Test round 5

เห็นว่าตัวแปรช่วยระบุแต่ละ object ใน input range สำหรับ number ranges ซับซ้อนกว่า ใช้ curly braces ตั้งค่า เปลี่ยน for $i in 1 2 3 4 5 เป็น for $i in {1..5} output เหมือนกัน สามารถนับแบบข้ามตัวเลขได้ นี่คือนับทุกตัวเลขทีละ 3 ระหว่าง 0 ถึง 27

for i in {0..27..3}
do
    echo $i
done

สิ่งที่พบบ่อยในสคริปต์คือ execute คำสั่งเฉพาะบนชุดไฟล์ ถ้าอยากใช้ cat บนไฟล์หลายตัวใน directory เปลี่ยนสคริปต์เป็น:

for file in test-directory/*
do
    cat "$file"
done

จะพิมพ์ output ของไฟล์ทั้งหมดใน "test-directory" ไปที่เทอร์มินัล

เริ่มเห็นภาพว่า For loop ทรงพลังแค่ไหน นี่แค่ขั้นพื้นฐาน สามารถ string multiple commands ระหว่าง do และ done และใช้ conditional statements ทำให้คำสั่งซับซ้อนขึ้นได้

อย่าลืมเช็ค Bash articles อื่นๆ ของเรา เช่น Bash Tips and Tricks to Work Smarter in the Terminal และ Bash special characters ที่ควรรู้