Problème avec un script shell

Résolu
Tyx Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
Tyx Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention  
 
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