xem xét vòng lặp đơn giản này:Simple Bash - cho f trong *
for f in *.{text,txt}; do echo $f; done
Tôi muốn vang tên tập tin chỉ có giá trị. Sử dụng biến $ f trong một tập lệnh, mọi thứ hoạt động tốt trừ khi không có bất kỳ tệp nào của tiện ích mở rộng đó. Trong trường hợp một tập hợp trống, $ f được đặt thành * .text và dòng trên là echos:
*.text
*.txt
thay vì không lặp lại gì cả. Điều này tạo ra một lỗi nếu bạn đang cố gắng sử dụng $ f cho bất cứ điều gì đó là mong đợi một tên tập tin thực tế thực tế và thay vào đó được *.
Nếu có bất kỳ tệp nào khớp với ký tự đại diện để nó không phải là bộ trống, mọi thứ hoạt động như tôi muốn. ví dụ.
123.text
456.txt
789.txt
Làm cách nào để làm điều này mà không có lỗi và không có sự phức tạp quá mức của chuỗi đầu tiên phù hợp với $ f cho dấu hoa thị?
Đây chính xác là những gì tôi đang tìm kiếm. Cảm ơn! – user1610022