OVH Cloud OVH Cloud

shell script ksh

5 réponses
Avatar
fr
Bonjour,

Je voudrai écrire un script qui traite des options et parapetres,
quelque chose comme:
toto.ksh -comd 'lsvg,lslv' -hdisk hdisk0
Je ne connais pas bien la syntaxe de la boucle :
while getopts ..... OPTIONS
do
done
pouvez-vous m'aider
maerci d'avance

5 réponses

Avatar
drkm
fr writes:

Je voudrai écrire un script qui traite des options et parapetres,


As-tu regardé du côté de `getopt(1)' et `getopts(1)' ?

--drkm

Avatar
Stephane Chazelas
2005-06-25, 07:09(+02), fr:
Bonjour,

Je voudrai écrire un script qui traite des options et parapetres,
quelque chose comme:
toto.ksh -comd 'lsvg,lslv' -hdisk hdisk0
Je ne connais pas bien la syntaxe de la boucle :
while getopts ..... OPTIONS
do
done
[...]


getopts ne connait que la syntaxe standard d'options (avec des
options d'une lettre). Dans ton exemple, getopts le comprendrait
comme:

toto.ksh -c -o -m -d 'lsvg,lslv' -h -d 'isk' hdisk0
(si on lui dit que -d prend un argument).

Le getopts des versions recentes de ksh93 gere les long options
a la GNU (--comd=lsvg,lslv) mais a une syntaxe imbitable (voir
getopts --man).

Voir le zparseopts de zsh pour un truc un peu moins abscons.

Sinon, faut le faire a la main:

usage() {
printf >&2 'Usage: %s -comd <comd> -hdisk <hdisk>n'
"${0##*/}"
exit 1
}

comd_valueÞfault_comd
hdisk_valueÞfault_hdisk

while [ "$#" -gt 1 ]; do
case $1 in
-comd)
[ "$#" -ge 2 ] || usage
comd_value=$2
shift 2;;
-hdisk)
[ "$#" -ge 2 ] || usage
hdisk_value=$2
shift 2;;
--)
shift
break;;
-*)
usage;;
*)
break;;
esac
done

Tu dois trouver des bibliotheques de fonctions shells sur le net
pour automatiser un peu.

--
Stéphane

Avatar
fr
Merci pour vos réponses.
Maintenant, on me demmande de faire la même chose mais en c comme dans
l'exemple ci-dessous.
A part getopts je ne connais pas d'autres fonctions qui permettent de
faire ca?
Qqn a une idée?
Merci d'avance.

2005-06-25, 07:09(+02), fr:

Bonjour,

Je voudrai écrire un script qui traite des options et parapetres,
quelque chose comme:
toto.ksh -comd 'lsvg,lslv' -hdisk hdisk0
Je ne connais pas bien la syntaxe de la boucle :
while getopts ..... OPTIONS
do
done


[...]

getopts ne connait que la syntaxe standard d'options (avec des
options d'une lettre). Dans ton exemple, getopts le comprendrait
comme:

toto.ksh -c -o -m -d 'lsvg,lslv' -h -d 'isk' hdisk0
(si on lui dit que -d prend un argument).

Le getopts des versions recentes de ksh93 gere les long options
a la GNU (--comd=lsvg,lslv) mais a une syntaxe imbitable (voir
getopts --man).

Voir le zparseopts de zsh pour un truc un peu moins abscons.

Sinon, faut le faire a la main:

usage() {
printf >&2 'Usage: %s -comd <comd> -hdisk <hdisk>n'
"${0##*/}"
exit 1
}

comd_valueÞfault_comd
hdisk_valueÞfault_hdisk

while [ "$#" -gt 1 ]; do
case $1 in
-comd)
[ "$#" -ge 2 ] || usage
comd_value=$2
shift 2;;
-hdisk)
[ "$#" -ge 2 ] || usage
hdisk_value=$2
shift 2;;
--)
shift
break;;
-*)
usage;;
*)
break;;
esac
done

Tu dois trouver des bibliotheques de fonctions shells sur le net
pour automatiser un peu.




Avatar
DoMinix
Merci pour vos réponses.
Maintenant, on me demmande de faire la même chose mais en c comme dans
l'exemple ci-dessous.
A part getopts je ne connais pas d'autres fonctions qui permettent de
faire ca?
Qqn a une idée?
Merci d'avance.


2005-06-25, 07:09(+02), fr:

Bonjour,





salut

1/ Merci de poster a l'endroi sur USENET,
http://www.giromini.org/usenet-fr/repondre.html#2

2/ pour vos devoirs donnez *vous* un peu de peine, ça ne nous
apprendra rien a nous.

3/ si c'est pour un boulot, pensez a embaucher un consultant.

merci de suivre les recommandations d'usage.

--
dominix



Avatar
Rakotomandimby (R12y) Mihamina
fr :

Maintenant, on me demmande de faire la même chose mais en c comme dans
l'exemple ci-dessous


Hum... tu veux qu'on fasse tes devoirs à ta place, toi...
C'est mal.

--
Miroir de logiciels libres http://www.etud-orleans.fr
Développement de logiciels libres http://aspo.rktmb.org/activites/developpement
Infogerance de serveur dédié http://aspo.rktmb.org/activites/infogerance
(En louant les services de l'ASPO vous luttez contre la fracture numerique)