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+"$@"}
เป็นงานรอบ )