Если нет совпадения для *aaa*
об ошибке сообщается по умолчанию. Это то, что заставляет ваш скрипт выйти.
Чтобы избежать этого, должна быть установлена опция NULL_GLOB
. Затем вместо сообщения об ошибке шаблон просто удаляется из списка аргументов, если ничего не найдено.
Есть несколько способов установить NULL_GLOB:
- для всего сценария , передав опцию командной строки
-G
в zsh
. Это также можно сделать в строке hash-bang:
$ zsh -G SCRIPT
#!/usr/bin/zsh -G
for f (*aaa*) {echo "$f"}
for f (*bbb*) {echo "$f"}
- для всех следующих строк , установив его с помощью setopt:
setopt NULL_GLOB
for f (*aaa*) {echo "$f"}
for f (*bbb*) {echo "$f"}
- для одного шаблона с использованием префикса glob
N
:
for f (*aaa*(N)) {echo "$f"}
for f (*bbb*) {echo "$f"}