Câu trả lời:
Chỉ cần để nó mở rộng bên trong một bên phải của khai báo mảng:
list=(../smth*/) # grab the list
echo "${#list[@]}" # print array length
echo "${list[@]}" # print array elements
for file in "${list[@]}"; do echo "$file"; done # loop over the array
Lưu ý rằng tùy chọn shell nullglobcần được đặt.
Nó không được đặt theo mặc định.
Nó ngăn ngừa một lỗi trong trường hợp toàn cầu (hoặc một trong nhiều khối) không khớp với bất kỳ tên nào.
Đặt nó bashvới
shopt -s nullglob
hoặc trong zshvới
setopt nullglob
unsetoptvà cùng tham số như được sử dụng cho setopt.
Không cần phải quá phức tạp mọi thứ:
echo your/stuff*
TEST=$(echo your/stuff*) && eval \"$TEST\"sẽ xuất:your/stuff*: No such file or directory
TESTbiến dưới dạng một chuỗi bao gồm *và không được mở rộng.
*.