forวนซ้ำลูปในพารามิเตอร์ตำแหน่งหากไม่มีin value1 value2...ส่วนใดถูกระบุในเชลล์เหมือน Bourne ทั้งหมด
นั่นเป็นกรณีในเชลล์เป้าหมายจากช่วงปลายยุค 70 แม้ว่าในเชลล์เป้าหมายคุณจะต้องละเว้นสิ่งนั้น;(คุณสามารถใช้for i do(ยกเว้นในรุ่นเถ้าเก่าบางรุ่นที่คุณต้องการขึ้นบรรทัดใหม่ก่อนdo))
ดูวัตถุประสงค์ของคำหลัก "ทำ" ใน Bash สำหรับลูปคืออะไร สำหรับข้อมูลเพิ่มเติมรวมถึงสายพันธุ์ที่น่าแปลกใจมากขึ้น
การทำ:
for i
do
something with "$i"
done
เป็นการปฏิบัติที่ดี มันพกพา / ไว้ใจได้มากกว่าปกติเล็กน้อย:
for i in "$@"; do
something with "$i"
done
ซึ่งเชลล์ Bourne, ksh88 มีปัญหาบางอย่างภายใต้เงื่อนไขบางอย่าง (เช่นเมื่อ$#เป็น 0 ในบางรุ่นของเชลล์เป้าหมาย (ซึ่ง${1+"$@"}แทนที่จะ"$@"สามารถแก้ไขได้) หรือเมื่อ$IFSไม่มีอักขระช่องว่างใน Bourne และ ksh88) หรือเมื่อnounsetตัวเลือกที่ถูกใช้งานและ$#เป็น 0 ในบางรุ่นของเปลือกหอยบางส่วนรวมถึงbash( อีกครั้งกับ${1+"$@"}เป็นงานรอบ )