Problème avec un script shell

Résolu/Fermé
Tyx Messages postés 12 Date d'inscription lundi 30 mars 2009 Statut Membre Dernière intervention 14 avril 2010 - 30 mars 2009 à 15:05
Tyx Messages postés 12 Date d'inscription lundi 30 mars 2009 Statut Membre Dernière intervention 14 avril 2010 - 31 mars 2009 à 08:37
Bonjour tout le monde.


J'ai un soucis avec mon programme. Voici un bout de mon programme et je vous explique mon problème :


while getopts 'w:c:f:u:h' choix; do
case $choix in
w) warning=$2
;;
c) critical=$4
;;
f)
free="ok"
;;
u)
utilisation="ok"
;;
h)
echo "$utils"
exit
;;
esac
done


Voici le bout de programme, j'explique mon problème.
Lorsque j'execute mon script avec les arguments appropriés derrière, cela ne fonctionne pas pour -f et -u.

Exemple :
./script.sh -h ( fonctionne )
./script.sh -w valeur -c valeur ( fonctionne )
./script.sh -f ( fonctionne pas )
./script.sh -u ( fonctionne pas )

Alors j'ai essayé de bidouiller un peu mon programme et en mettant ceci :

while getopts 'w:c:fu:h' choix;

L'exemple ./script.sh -f ( fonctionne ) mais ./script.sh -u ( fonctionne pas )

Si je fais ceci :

while getopts 'w:c:uf:h' choix;

L'exemple ./script.sh -u ( fonctionne ) mais ./script.sh -f ( fonctionne pas )


Voila, si vous avez une idée de l'erreur que j'ai faite ou une modification à apporter pour que cela m'accepte mes arguments, je vous en serai reconnaissant.

A bientot.
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 898
30 mars 2009 à 18:20
Salut,

A partir du moment où tu places le caractère ":" (deux points) derrière une option, celle-ci attend un argument. Donc forcément si tu ne places rien derrière tes options "f" ou "u" cela ne marchera pas ;-((
while getopts 'w:c:fu:h' choix;

L'exemple ./script.sh -f ( fonctionne ) mais ./script.sh -u ( fonctionne pas )
Normal "f" n'attend aucun argument alors que "u" en attend un.

Idem pour
while getopts 'w:c:uf:h' choix;

L'exemple ./script.sh -u ( fonctionne ) mais ./script.sh -f ( fonctionne pas ) 
...
0
Tyx Messages postés 12 Date d'inscription lundi 30 mars 2009 Statut Membre Dernière intervention 14 avril 2010
31 mars 2009 à 08:37
D'accord je comprends mieux, j'ai pu régler mon soucis avec ton explication en faite j'ai juste mis ceci vu que je n'ai pas d'argument :

while getopts 'w:c:hfu' choix; etant donné que il y a seulement w et c qui ont des arguments.


Merci beaucoup en tout cas de ton aide a bientot.
0