Что: f1e94e29c698bd514d4f08fea7775508fe22c8c7
Когда: 2023-05-10 13:31:31+03:00
Темы: zsh
zparseopts вместо getopts https://linux.die.net/man/1/zshmodules https://www.zsh.org/mla/users/2011/msg00350.html Спустя столько лет у меня появился zsh скрипт с опциональными аргументами. Передавал я их через переменные окружения, что не очень удобно. Наверняка же в zsh есть какой-нибудь helper для парсинга аргументов? В моём скрипте мне хватило всего лишь просто помещения в один ассоциативный массив значений длинных опций. В рассылке привели более сложный пример с короткими и длинными опциями: while getopts dhv opt ; do case $opt in (d) setopt xtrace;; (h) print_help exit;; (v) print_version exit;; esac done Если поместить -d и --debug в $opthash[d], то проверить наличие ключа можно ${opthash[(i)-d|--debug]}. Можно использовать разные массивы: local -a debug help vers usage zparseopts \ d=debug -debug=debug \ h=help -help=help \ v=vers -version=vers и $+debug[1] покажет был ли использован debug. Ну а обработать результат zparseopts можно так: [[ -n $debug ]] && setopt xtrace [[ -n $version ]] && print_version [[ -n $help ]] && print_help [[ -n "$help$version" ]] && exit
Сгенерирован: SGBlog 0.34.0