Existe uma maneira simples de obter uma matriz de todos os argumentos que não começam com um hífen?

4

zsh inclui um poderoso utilitário para analisar as opções de linha de comando zparseopts , mas para scripts de shell rápidos e funções de shell, mas existe uma maneira fácil de extrair o array de todos os comandos? argumentos de linha que não começam com um hífen?

    
por kjo 08.02.2014 / 20:55

1 resposta

5

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 .

    
por 08.02.2014 / 23:27