[Bash] donner en input le nom de l'argument et sa valeur ?

Fermé
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 19 avril 2013 à 10:08
 Utilisateur anonyme - 19 avril 2013 à 14:10
Salut,

Dans un script bash, mettons mon_script.sh, j'ai décidé de pouvoir entrer 3 arguments, là encore, pour l'exemple :
./mon_script.sh 5 oui masculin

Voilà.

Le hic, c'est que j'aimerai pouvoir le lancer parfois sans l'argument numéro 2, mais si j'écris ceci :
./mon_script.sh 5 masculin

il y a un problème : l'argument 2 c'est "masculin" et il n'y a plus d'argument 3.

J'aimerai donc pouvoir faire ça comme ceci :
./mon_script.sh arg1=5 arg2=oui arg3=masculin

pour pouvoir
1. ne plus tenir compte de l'ordre dans lesquels les arguments sont passés.
2. omettre un argument qui est au milieu de la liste, typiquement ici le deuxième sans que ça pose problème au bon fonctionnement du script.

C'est tout bête mais je vois pas comment faire.
Merci beaucoup de vos tuyaux ! ;)
Et passez un bon vendredi.

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
19 avril 2013 à 10:25
Salut,

Voir du côté de getopts.
2
Utilisateur anonyme
19 avril 2013 à 14:10
salut,

tu peux jouer avec BASH_ARGV
#!/bin/bash

typeset "${BASH_ARGV[@]}"

echo "nomVar_enDur = $nomVar_enDur"
le script sera lancé ainsi
./monScript peu importe nomVar_enDur="autre chose"
1