|
Publicité | ||||||||||||||||||||||
|
|
#1 (permalink) |
|
Membre actif
![]() Date d'inscription: février 2005
Localisation: Vienne (38)
Messages: 177
|
Bonjour à tous,
Je cherche à refaire un de mes scripts, de manière à ce qu'il soit utilisable par d'autres personnes, il me faut donc le compliquer pas mal, pour ça j'aurais besoin de connaitre la manière d'utiliser les arguments précédés d'un ou deux tirets "-", par exemple : ./toto -d 0 --gauche 0 ou ./toto -g 0 --droite 0 ceci afin de pouvoir inverser les arguments, qu'ils soient optionnels... enfin avoir une vraie gestion des arguments. Cordialement, Mathias |
|
|
|
|
|
#2 (permalink) |
![]() Date d'inscription: octobre 2004
Localisation: Paris
Âge: 26
Messages: 641
|
man getopt
__________________
Software becomes slower faster than hardware becomes faster http://xrenault.developpez.com API C standard (C ANSI ) |
|
|
|
|
|
#3 (permalink) |
|
Membre éprouvé
![]() Date d'inscription: mars 2007
Localisation: Toulouse
Messages: 471
|
Une base pour commencer
http://man.developpez.com/man1/getopts.1.php Code :
syntaxe="syntaxe : $(basename $0) -h -f folder -t object_type -n object_name -d target"
while getopts ":f:t:n:d:h" OPTION
do
case $OPTION in
-h)
echo $syntaxe
exit 1
;;
f)
export folder=$OPTARG
;;
t)
object_type=$OPTARG
;;
n)
object_name=$OPTARG
;;
d)
target=$OPTARG
;;
:)
echo "*** OPTION \"$OPTARG\" sans arg"
exit 1
;;
\?)
echo "*** option $OPTARG inconnue !!!"
exit 1
;;
esac
done
if [[ $OPTIND -eq 1 ]] ; then
echo $syntaxe
exit 1
fi
__________________
Loi de Murphy: La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi. La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi. |
|
|
|
|
|
#5 (permalink) |
|
Membre actif
![]() Date d'inscription: février 2005
Localisation: Vienne (38)
Messages: 177
|
Salut à tous,
Donc, comme je suis nul, j'ai eu du mal malgré les deux exemples gentillement fourni ces jours précédents, me revoilà donc avec un script complet, qui fonctionne dans bash (solaris 5.8) et ksh (la même solaris et HP-UX - je ne saurais dire quelle version Code :
#!/bin/ksh
while getopts "a:b:c:d:" OPTION
do
case $OPTION in
a ) aFLAG=$OPTIND; aARG=$OPTARG;;
b ) bFLAG=$OPTIND; bARG=$OPTARG;;
c ) cFLAG=$OPTIND; cARG=$OPTARG;;
d ) dFLAG=$OPTIND; dARG=$OPTARG;;
esac
done
echo aFLAG = $aFLAG - aARG = $aARG
echo bFLAG = $bFLAG - bARG = $bARG
echo cFLAG = $cFLAG - cARG = $cARG
echo dFLAG = $dFLAG - dARG = $dARG
Code :
~$ ./test_arg -b test -d arguments -c pouet -a hop aFLAG = 9 - aARG = hop bFLAG = 3 - bARG = test cFLAG = 7 - cARG = pouet dFLAG = 5 - dARG = arguments ~$ Voilà, en espérant que cela puisse un jour servir à quelqu'un d'autre, Cordialement, mathias |
|
|
|
|
|
#6 (permalink) |
|
Membre habitué
![]() Date d'inscription: juillet 2006
Messages: 164
|
Je n'ai pas très bien compris comment fonctionne cette partie :
Code :
while getopts ":f:t:n:d:h" OPTION Code :
while getopts ":f:" OPTION Code :
:) echo "*** OPTION \"$OPTARG\" sans Code :
f)
export folder=$OPTARG
;;
Bonne soirée Fluxy |
|
|
|
|
|
#7 (permalink) |
|
Membre éprouvé
![]() Date d'inscription: mars 2007
Localisation: Toulouse
Messages: 471
|
Une lettre suivie de : signifie, attend un argument
Une lettre non suivie de : signifie, pas d'argument Le 1er : dans la commande getopts ( ":f...." ) permet de gérer les anomalies par le script (cf ci-dessous) Exemple de script avec : Code :
while getopts "f:t:n:d:h" OPTION Code :
$ xgetopt02.sh -f ./xgetopt02.sh: option requires an argument -- f *** option inconnue !!! Code :
while getopts ":f:t:n:d:h" OPTION Code :
$ xgetopt02.sh -f *** OPTION "f" sans arg
__________________
Loi de Murphy: La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi. La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi. |
|
|
|
|
|
![]() |
||
[ksh et/ou bash] Utilisation des arguments type -d
|
||
| Outils de la discussion | |
|
|