Existe-t-il un moyen simple d'get un tableau de tous les arguments qui ne commencent pas par un trait d'union?

zsh inclut un utilitaire puissant pour parsingr les options de command line zparseopts , mais pour les scripts shell et les fonctions shell rapides, mais existe-t-il un moyen facile d'extraire le tableau de tous les arguments de command line qui ne commencent pas par un trait d'union?

Filtrez les parameters positionnels $@ avec le suffixe d'extension de paramètre :#-* pour séparer les éléments correspondant au motif -* et le drapeau d'expansion des parameters @ guillemets doubles pour préserver les éléments vides. Ajoutez le drapeau M pour conserver uniquement les éléments correspondant au model.

 non_hyphen_arguments=("${(@)@:#-*}") hyphen_arguments=("${(@M)@:#-*}") 

Cependant, ce n'est pas un bon moyen d'parsingr les arguments de la command line; par exemple, donné

 myscript hello -a world 

vous obtiendrez hello et world dans non_hyphen_arguments et -a dans hyphen_arguments .

La forme la plus simple de l'parsing des arguments, avec des options à une seule lettre, est getopts .