Problème avec un script shell

Résolu
Tyx Messages postés 13 Statut Membre -  
Tyx Messages postés 13 Statut Membre -
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 41342 Statut Modérateur 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 13 Statut Membre
 
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