จะรันหลายคำสั่งในลูปเดียวได้อย่างไร?
การแสดงชื่อไฟล์มีประโยชน์สำหรับการดีบัก แต่จุดประสงค์หลักของลูปคือการทำงานกับไฟล์หลายไฟล์พร้อมกัน ลูปด้านล่างนี้แสดงบรรทัดที่สองของไฟล์ข้อมูลแต่ละไฟล์:
for file in seasonal/*.csv; do head -n 2 $file | tail -n 1; done
ลูปนี้มีโครงสร้างเดียวกับลูปที่เคยเห็นมาแล้ว ความแตกต่างเพียงอย่างเดียวคือเนื้อหาของลูปเป็น pipeline ของสองคำสั่งแทนที่จะเป็นคำสั่งเดียว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Introduction to Shell
คำแนะนำการฝึกหัด
เขียนลูปเพื่อแสดงรายการล่าสุดของเดือนกรกฎาคม 2017 (2017-07) จากทุกไฟล์ในชุดข้อมูล seasonal ผลลัพธ์ควรคล้ายกับ:
grep 2017-07 seasonal/winter.csv | tail -n 1
แต่ให้ทำงานกับทุกไฟล์ใน seasonal แยกกัน ใช้ file เป็นชื่อตัวแปรของลูป และวนลูปผ่านรายการไฟล์ seasonal/*.csv (แทนที่จะเป็น 'seasonal/winter.csv' อย่างในตัวอย่าง)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำจริง
เปลี่ยนทฤษฎีให้เป็นการลงมือทำด้วยแบบฝึกหัดเชิงโต้ตอบหนึ่งในของเรา
เริ่มแบบฝึกหัด