Trong khi các câu trả lời khác thảo luận về việc sử dụng evalvà seq, trong bash, bạn có thể sử dụng forvòng lặp kiểu C truyền thống trong ngữ cảnh số học. Các biến ext0và extNđược mở rộng bên trong ((..))khiến cho vòng lặp chạy cho phạm vi được xác định.
for (( idx = ext0; idx <= extN; idx++ )); do
[[ -f "$foo.$idx" ]] || { printf "file %s does not exist" "$foo.$idx" >&2 ; continue }
rm "$foo.$idx"
done
Nếu bạn đang tìm kiếm một cách tối ưu và tránh nhiều rmlệnh, bạn có thể sử dụng trình giữ chỗ tạm thời để lưu trữ kết quả tên tệp và gọi rmtrong một lần.
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
và bây giờ gọi rmlệnh trên mảng mở rộng
rm -- "${results[@]}"