ในขณะที่คำตอบอื่น ๆ พูดถึงการใช้evalและseqในbashคุณสามารถใช้การforวนซ้ำสไตล์ C แบบดั้งเดิมในบริบททางคณิตศาสตร์ ตัวแปรext0และextNถูกขยายภายใน((..))ทำให้ลูปทำงานในช่วงที่กำหนด
for (( idx = ext0; idx <= extN; idx++ )); do
[[ -f "$foo.$idx" ]] || { printf "file %s does not exist" "$foo.$idx" >&2 ; continue }
rm "$foo.$idx"
done
หากคุณกำลังมองหาวิธีที่ดีที่สุดและหลีกเลี่ยงrmคำสั่งหลาย ๆคำสั่งคุณสามารถใช้ตัวยึดตำแหน่งชั่วคราวเพื่อจัดเก็บผลลัพธ์ชื่อไฟล์และการโทรแบบrmครั้งเดียว
results=()
for (( idx = ext0; idx <= extN; idx++ )); do
[[ -f "$foo.$idx" ]] || { printf "file %s does not exist" "$foo.$idx" >&2 ; continue }
results+=( "$foo.$idx" )
done
และตอนนี้เรียกrmคำสั่งในอาร์เรย์ที่ขยาย
rm -- "${results[@]}"