[О блоге]
[наверх]
[пред]
[2023-05-10 13:31:31+03:00]
[f1e94e29c698bd514d4f08fea7775508fe22c8c7]
Темы: [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
[оставить комментарий]