Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Script sh
Envoyé par: mok'

Bonjour tout le monde.
J'ai un ptit probleme.
J'aimerais savoir si :
Quand on a $i qui vaut 3
on peut voir le troisieme argument passer en parametre ($3)
si oui comment ?

Merci d'avance.

Poste le Wednesday 22 December 2004 15:25:22
Répondre     Citer    
Re: Script sh
Envoyé par: Marck

Salut

Je ne sais si c'est vraiment ce que tu cherches...

Voici un script et son résultat:

user@exil:~/vrac$ cat param.sh
#!/bin/sh
# param.sh
echo "le paramètre \$1 est $1"
echo "le paramètre \$2 est $2"
echo "le paramètre \$3 est $3"
for i in 1 2 3
do
echo "le paramètre \$$i est `echo $* | cut -d" " -f$i`"
done

user@exil:~/vrac$ ./param.sh pim pam poum
le paramètre $1 est pim
le paramètre $2 est pam
le paramètre $3 est poum
le paramètre $1 est pim
le paramètre $2 est pam
le paramètre $3 est poum

Il y a sans doute d'autres façon de faire pour le $i (si j'ai bien compris c'est cela qui t'intéresse) mais c'est la première que j'ai trouvée. Je n'ai pas réussi pour $i à passer directement par $1 $2 $3 c'est pour cela que j'ai utilisé $*

A +

Poste le Wednesday 22 December 2004 16:36:49
Répondre     Citer    
Re: Script sh
Envoyé par: Sve@r

En fait, tu voudrais utiliser le contenu de "$i" comme référence pour une autre variable. On appelle cela un... pointeur !

Essaye cela
i=3
eval echo "$"$i

Ton script commencera par remplacer "$i" par 3 puis évaluera l'expression "echo $3"
et tu devrais obtenir ton 3° argument comme si tu avais écrit toi-même "echo $3"

A+ jeune padawan...

Poste le Wednesday 22 December 2004 19:03:51
Répondre     Citer    
Re: Script sh
Envoyé par: mok'

Merci bcp ! c'est ce que je voulais !

Poste le Wednesday 22 December 2004 19:51:07
Répondre     Citer    
Re: Script sh
Envoyé par: Marck

Merci yawning smiley) Moi aussi, j'ai appris qqc ainsi.

Poste le Wednesday 22 December 2004 22:48:50
Répondre     Citer    
Re: Script sh
Envoyé par: Jonesy's

Bonsoir,

C'est marrant, j'étais sûr que $(( $i )) marchait... Mais je viens de le tester et l'echo plante que se soit en bash ou en ksh...

Vais devoir réviser moi...
@+

--- Marchons seul, sans faire le mal, sans rien attendre, tel l'éléphant qui traverse la forêt. ---

Poste le Wednesday 22 December 2004 23:30:49
Répondre     Citer    
Pas tout a fait le meme probleme...
Envoyé par: onejock

Bonjour,


Je souhaite pouvoir faire la chose suivante :


- Lancer un script qui s'appel script en lui passant 5 en parametre

-> > script 5


- que celui-ci contienne une fonction f qui est appelé avec un parametre

-> function f ()
{
echo $1 veut afficher X # le X en question est le premier paramatre du script
}
f toto


- le resultat souhaité est

-> >toto veut afficher 5


Poste le Tuesday 28 December 2004 10:10:00
Répondre     Citer    
Re: Script sh
Envoyé par: Marck

Re

Je vais peut-être apprendre autre chose...
Voici déjà une possibilité.

#!/bin/sh
para=$1
function f ()
{
echo "$1 veut afficher $para"
}
f toto

A +

Poste le Tuesday 28 December 2004 11:05:49
Répondre     Citer    
Re: Script sh
Envoyé par: onejock

OK je suis d'accord mais il me semble l'avoir deja fait un jour sans declarer de nouvelle variable. Je ne me souviens plus mais ya une histoire avec \$$1 dans la fonction ou un truc comme ca, si ca peut t'aider...

Poste le Tuesday 28 December 2004 12:54:33
Répondre     Citer    
Re: Script sh
Envoyé par: Marck

Bof je ne sais pas trop... cela marche aussi ainsi:

#!/bin/sh
function f ()
{
echo "$1 veut afficher $2"
}
f toto $1

Mais j'ai modifié légèrement l'appel de la fonction... avec 2 paramètres.

Poste le Tuesday 28 December 2004 14:01:22
Répondre     Citer    
Re: Script sh
Envoyé par: onejock

lol
ok ben si je retrouve ca dans le fin fond de ma memoire je re-posterais.
Merci.

Poste le Wednesday 29 December 2004 15:16:50
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Script sh
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons