Nième paramètre d'un script
FMA
-
Jamirokoi from 13 -
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
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
-
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" ! -
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}" -
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. -
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! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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). -
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