Bash: problèmes paramètres..!

Résolu
LezardMoo Messages postés 614 Statut Membre -  
LezardMoo Messages postés 614 Statut Membre -
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

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Affiche ton script en entier, sans quoi... on n'est pas devin ;-\
    0
  2. LezardMoo Messages postés 614 Statut Membre 14
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
    2. LezardMoo Messages postés 614 Statut Membre 14
       
      je peux te le donner en msg privé ??
      0
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
    4. LezardMoo Messages postés 614 Statut Membre 14
       
      arf ^^
      peux tu m'expliquer ??
      0
    5. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      T'expliquer quoi ? Le $@ ?
      0
  3. LezardMoo Messages postés 614 Statut Membre 14
     
    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