Bash: problèmes paramètres..!

Résolu/Fermé
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 23 août 2012 à 03:56
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 23 août 2012 à 16:20
Bonjour tout le monde !!!

alors voila, je suis entrain d'écrire un petit script, mais je suis bloqué sur le test d'un paramètre oO

alors voila, mon script prend 3 paramètre,

le $1 est le mot clé qui va appeler la fonction voulu
le $2 est de type numérique
le $3 est un fichier.

le problème est au niveau du $2...

si je fais

./script -keyword 5 file
il me repond: le premier paramètre n'est pas numérique -_-

si je place un echo '$2: '$2, il me sort bien ma valeur de 5

le test du param est comme ceci:

if [[ $2 = +([0-9]) ]] ; then
action
else
action
fi

ha oui, aussi si je prend le code du test du param et que je le met dans un fichier de facon à lancer le script comme suit (en remplacant $2 par $1 biensur ;) )

./script 5 file

alors là le test fonctionne correctement.... une idée???

j'espère avoir été claire parce qu'il est 4h moins 10 xD et j'ai pas encore fini !!!!!!!!

Bonne nuit et Bonne journée à tous :D

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
23 août 2012 à 07:56
Salut,

Affiche ton script en entier, sans quoi... on n'est pas devin ;-\
0
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
23 août 2012 à 13:18
merci pour l'aide

bon d'habitue aucun soucis pour affiche le scrpt mais la ca m'embète un peu. je t'en donne un bou et tu me dis ?

### func2
func2(){
if [[ $2 = +([0-9]) ]] ; then
if [ -f $3 ] ; then
ACTIONS
fi
else
ACTION
fi
}

case "$1" in
-func1)
func1;;
-func2)
func2;;
-help)
help;;
*)
echo "-func1"
echo "-func2"
echo "-help";;
esac
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
23 août 2012 à 13:24
Désolé mais ce n'est pas avec un bout qu'on va pouvoir déterminer d'où vient ton problème ;-(

Je comprend très bien que tu ne veuilles/puisses pas dévoiler ton script, mais nous avons besoin de tous les paramètres pour essayer de trouver la faille ;-\
0
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
23 août 2012 à 13:35
je peux te le donner en msg privé ??
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
23 août 2012 à 14:20
Pas la peine, en regardant ton bout de script de plus près, il s'avère que ta fonction ne reçoit aucun paramètre, d'où l'erreur ;-((
case "$1" in
-func1)
func1;;
-func2)
func2 $@ ;;
-help)
help;;
*)
0
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
23 août 2012 à 14:25
arf ^^
peux tu m'expliquer ??
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
23 août 2012 à 14:26
T'expliquer quoi ? Le $@ ?
0
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
23 août 2012 à 16:20
OOOOHHH YEAAAHH !!!!

c'est bon j'ai compris pourquoi ca ne fonctionnait pas(enfin je pense que c'est pour ca), tout simplement parce que je testais uniquement le pumper:

case "$1" in 
-rename) 
              renamer ;;
-pump) 
              pumper $@ ;; 
*) 
              echo "Mauvais param" ;; 
esac 

alors que même en testant la fonction pumper il faut correctement coder le reste xD 
comme ca:

case "$1" in 
-rename) 
              renamer $@;;
-pump) 
              pumper $@ ;; 
*) 
              echo "Mauvais param" ;; 
esac 


et la ca fonctionne correctement :D !!

Merci zipe31 :D
Bonne fin d'aprem ;)
0