Je me souviens avoir vu quelque part un bash
script utilisant case
et shift
parcourant la liste des paramètres de position, analysant les drapeaux et les options avec des arguments lorsqu'il les rencontre, et les supprimant après l'analyse pour ne laisser que les arguments nus, qui sont ensuite traités par le reste de la scénario.
Par exemple, en analysant la ligne de commande de cp -R file1 -t /mybackup file2 -f
, il parcourrait d'abord les paramètres, reconnaîtrait que l'utilisateur a demandé de descendre dans les répertoires par -R
, spécifié la cible par -t /mybackup
et pour forcer la copie par -f
, et supprimait ceux de la liste des paramètres, laissant le programme à traiter file1 file2
comme arguments restants.
Mais je ne semble pas être capable de me souvenir / découvrir quel que soit le script que j'ai vu à chaque fois. J'aimerais juste pouvoir faire ça. J'ai fait des recherches sur divers sites et j'ai joint une liste des pages pertinentes que j'ai examinées.
Une question sur ce site Web portait spécifiquement sur les "options indépendantes de l'ordre", mais la réponse unique et la réponse à la question à laquelle elle a été dupliquée ne prennent pas en compte des cas comme celui ci-dessus où les options sont mélangées avec des arguments normaux, ce qui, je présume, était le raison pour laquelle la personne mentionne spécifiquement les options indépendantes de la commande .
Étant donné que bash
la fonction intégrée getopts
semble s'arrêter au premier argument de non-option, elle ne semble pas être une solution suffisante. C'est pourquoi la page de Wooledge BashFAQ (voir ci-dessous) explique comment réorganiser les arguments. Mais j'aimerais éviter de créer plusieurs tableaux au cas où la liste d'arguments serait assez longue.
Étant donné shift
que ne prend pas en charge le saut d'arguments individuels au milieu de la liste des paramètres, je ne sais pas quelle est la manière simple de mettre en œuvre ce que je demande.
J'aimerais savoir si quelqu'un a des solutions pour supprimer les arguments du milieu de la liste des paramètres sans créer un tout nouveau tableau.
Pages que j'ai déjà vues:
- http://mywiki.wooledge.org/ComplexOptionParsing#Rearranging_arguments
- http://mywiki.wooledge.org/BashFAQ/035
- Utilisation de getopts dans le script shell bash pour obtenir des options de ligne de commande longues et courtes
- http://wiki.bash-hackers.org/scripting/posparams
- http://wiki.bash-hackers.org/howto/getopts_tutorial
- cas d'argument bash pour args dans $ @
- Quelle est la manière canonique d'implémenter des options indépendantes de l'ordre dans les scripts bash?
- Comment gérer les commutateurs dans un script shell?