Filtre os parâmetros posicionais $@
com o sufixo de expansão de parâmetro :#-*
para remover elementos que correspondem ao padrão -*
e ao sinalizador de expansão de parâmetro @
dentro de aspas duplas para preservar elementos vazios. Adicione o sinalizador M
para reter apenas os elementos que correspondem ao padrão.
non_hyphen_arguments=("${(@)@:#-*}")
hyphen_arguments=("${(@M)@:#-*}")
No entanto, isso não é uma boa maneira de analisar os argumentos da linha de comando; por exemplo, dado
myscript hello -a world
você receberá hello
e world
em non_hyphen_arguments
e -a
em hyphen_arguments
.
A forma mais simples de análise de argumentos, com opções de uma única letra, é getopts
.