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 .