Nième paramètre d'un script

Fermé
FMA - 6 mai 2005 à 11:04
 Jamirokoi from 13 - 28 juin 2007 à 15:49
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
A voir également:

6 réponses

kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
6 mai 2005 à 11:21
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
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
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
6 mai 2005 à 12:31
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
6 mai 2005 à 13:19
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
Jamirokoi from 13
28 juin 2007 à 15:49
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