Для выполнения сценариев перерывов в 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"}