Для выполнения сценариев перерывов в ZSH

Я чувствую себя глупо У меня есть сценарий ZSH, например, с двумя файловыми циклами, например:

for f (*aaa*) {echo "$f"}
for f (*bbb*) {echo "$f"}

Скрипт завершается, если первый find не находит подходящие файлы. Мне нужен сценарий, чтобы продолжать работать.

Что мне не хватает?

1 ответ

Решение

Если нет совпадений для *aaa* ошибка сообщается по умолчанию. Это то, что заставляет ваш скрипт выйти.

Чтобы избежать этого NULL_GLOB опция должна быть установлена. Затем вместо сообщения об ошибке шаблон просто удаляется из списка аргументов, если ничего не совпадает.

Есть несколько способов установить NULL_GLOB:

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