Tôi còn khá mới với kịch bản Bash. Tôi có một "bản kiểm tra", mà tôi đã sử dụng làm cơ sở cho một tập lệnh nâng cao / hữu ích hơn:
#!/bin/bash
files=$1
for a in $files
do
echo "$a"
done
Khi tôi gọi nó mà không có bất kỳ trích dẫn nào, nó chỉ chọn một tập tin trong một thư mục:
testscript *.txt
Nhưng khi tôi gọi nó bằng dấu ngoặc kép, nó hoạt động chính xác và chọn ra tất cả các tệp văn bản:
testscript '*.txt'
Chuyện gì đang xảy ra ở đây?
for a in "$@"; do
(hoặcfor a; do
) trong kịch bản của bạn, do đó rời khỏi globbing với lớp vỏ bên ngoài, chứ không phải để bỏ qua các dấu ngoặc kép.