Nième paramètre d'un script

FMA -  
 Jamirokoi from 13 -
Bonjour à vous,

je travaille actuellement sur un script unix, et j'aimerais récuperer le nième paramètre d'une fonction sachant que n est une variable de ma fonction. Comment faire ?

Merci
Configuration: Solaris 2.8

6 réponses

  1. kmf31 Messages postés 1564 Statut Contributeur 501
     
    Dans la bash shell les parametres sont $0, $1, $2, ... et l'ensemble c'est: $@
    Par contre ici le $n ne marche pas si n contient une valeur. Pour ca tu peux utiliser:

    ${@:$n:1}


    De facon generale: ${VAR:a:n} prend les elements a, a+1, a+n-1, de VAR (si les elements sont separes par de blancs).
    Regarde "man bash" !
    0
  2. FMA
     
    il me dit "substitution incorrecte", voilà mon code qui l'utilise si ca peut t'éclaircir...

    callMenu()
    {
    integer n
    echo "0. Tout arreter"
    n=0
    for i in $@
    do
            n=$n+1
            echo "$n. $i"
    done
    echo "Votre choix? \c"
    read c
    echo "${@:$c:1}"
    
    0
  3. kmf31 Messages postés 1564 Statut Contributeur 501
     
    j'ai teste avec ce script:

    n=3
    echo start
    echo ${@:$n:1}
    echo stop
    


    et ca marche si j'appelle le script: "<nom_script> 1 2 3 4 5 6 "

    Ton truc marche aussi chez moi (si j'enleve la structure "callmenu" et la ligne "integer n" est rejete chez moi).

    Je ne vois pas ou il y a le probleme, peut-etre il te faudra simplement utiliser le bash-shell de GNU et le sh de Sun est trop primitive pour ca.
    0
  4. FMA
     
    bon je suis simplement passer par un tableau pour stocker mes paramètres (faut dire que je suis pas complétement libre : c'est pour mon stage et faut que je fasse le script en ksh qu'on m'a dit )
    en tout cas, merci encore de ton aide!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kmf31 Messages postés 1564 Statut Contributeur 501
     
    Quand je fais avec "ksh" (1ere ligne: "#!/usr/bin/ksh" dans le script) il me fait la meme erreur: bad substitution. Par contre avec
    "#!/bin/sh" ca marche.
    Donc c'est une difference entre ksh et sh ou bash. Il te faudra chercher la doc avec "man ksh" pour voir comment faire (si c'est absolument necessaire avec ksh).
    0
  7. Jamirokoi from 13
     
    Je sais que le message est vieux mais si quelqu'un tombe dessus comme moi, la solution pour ksh est de remplacer

    echo ${@:$n:1}

    par

    echo `expr substr $@ $n 1`

    ca devrait marcher !!!

    A+

    Jamirokoi
    0