Les Allergies
Alimentaires
Posez votre question Signaler

Nième paramètre d'un script

FMA - Dernière réponse le 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
Lire la suite 

Nième paramètre d'un script »

6 réponses
Réponse
+0
moins plus
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" !
Ajouter un commentaire
Réponse
+0
moins plus
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}"
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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!
Ajouter un commentaire
Réponse
+0
moins plus
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).
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « nième paramètre d'un script » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?