Câu trả lời:
Nếu bash không thể tìm thấy kết quả khớp, nó sẽ chuyển chuỗi ký tự đến ứng dụng *chưa được mở rộng. Ví dụ:
$ ls
foo
$ cat /tmp/test
echo $1
$ /tmp/test *foo*
foo
$ /tmp/test *bar*
*bar*
bashmở rộng *foo*vì nó khớp, nhưng được truyền *bar*trực tiếp vì không được. Thay vào đó, nullglobtùy chọn sẽ báo bash để giải quyết các mẫu không khớp với chuỗi trống thay thế:
$ shopt -s nullglob
$ /tmp/test *bar*
$
zsh: no matches found.
no_nomatchphải kích hoạt hành vi này.
find . -name *foo*bằngfind . -name '*foo*'nó sẽ cho phép các ký tự đại diện hoạt động như mong đợi.