Как проверить параметр zsh-скрипта в шаблоне или нет?

Скрипт zsh, который запускается: script.zsh nameabc01 , в script.zsh Мне нужно проверить, есть ли nameabc01 в этом шаблоне, na*abc* или нет, чтобы продолжить что-то делать или решить выйти из скрипта.

Как мы можем этого достичь?

и чтобы расширить этот вопрос, как мы можем добиться этого, сверяясь со списком шаблонов в файле (разделенных новой строкой)?

One Solution collect form web for “Как проверить параметр zsh-скрипта в шаблоне или нет?”

Проверьте, что есть аргументы и что первый аргумент соответствует некоторому шаблону glob:

 #!/usr/bin/env zsh if (( # == 0 )); then print >&2 "Usage: $0 na*abc* ..." exit 1 fi if [[ $1 != na*abc* ]]; then print >&2 "not ok" exit 1 fi 

(Да, я вставляю скрипты оболочки в три пробела, и нет, я никогда не *.zsh в них расширения *.zsh или *.sh ), которые можно протестировать:

 % ./argchecker Usage: ./argchecker na*abc* ... % ./argchecker wombat not ok % ./argchecker na1abc1 % ./argchecker na1111111111abc1111111111 % 

Если вы хотите разрешить na1abc1 но запретить na1111111111abc1111111111 вам нужно использовать ? вместо * или вместо этого переключитесь на совпадение регулярного выражения с =~ и подходящим регулярным выражением.

Чтение списка шаблонов из файла также возможно, но требует немного больше кода для необходимой логики.

 #!/usr/bin/env zsh if (( # == 0 )); then print >&2 "Usage: $0 todofixme ..." exit 1 fi globs=(${(f)"$(< patternfile)"}) ret=1 for g in $globs; do if [[ $1 == $~g ]]; then ret=0 break fi done if (( ret == 1 )); then print >&2 "not ok" exit 1 fi 

И patternfile и некоторое тестирование.

 % cat patternfile cat* *bat % ./pargchecker fish not ok % ./pargchecker catfish % ./pargchecker wombat % 

Документы в zshexpn(1) и zshparam(1) , вероятно, работают в режиме peek или существующего кода в $fpath[-1] .

  • Изменение цвета каталога с помощью zsh + Prezto
  • Как решить nsf-общую связанную ошибку при установке zsh в ubuntu?
  • zsh автозавершение некоторых частей каталога
  • При использовании zsh tab-completion игнорируйте CDPATH, если локальный файл или каталог совпадают
  • Ошибка перехвата «команда не найдена» в zsh
  • Как проверить, если текущая оболочка zsh уже выполнила команды `dircolors` и` stty`?
  • Для перенаправления ввода существуют функциональные различия между bash / zsh <<< «$ (<файл)» и традиционным <file?
  • При применении команд к группам строк из stdin
  • Oh-My-Zsh переопределяет мою функцию?
  • Динамически обновлять список завершений в zsh
  • zsh: как получить расширение файла, работающее в заявлении на печать
  • Linux и Unix - лучшая ОС в мире.