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
.