Problème avec un script shell
Résolu
Tyx
Messages postés
13
Statut
Membre
-
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.
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.
Configuration: Windows XP Internet Explorer 6.0
2 réponses
-
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 pourwhile getopts 'w:c:uf:h' choix; L'exemple ./script.sh -u ( fonctionne ) mais ./script.sh -f ( fonctionne pas )
...
-
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.