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 nullglob
cầ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ó bash
với
shopt -s nullglob
hoặc trong zsh
với
setopt nullglob
unsetopt
và 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
TEST
biến dưới dạng một chuỗi bao gồm *
và không được mở rộng.
*
.