Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
variables en bash
Envoyé par: Cyber.T@Z

boujour a tous,

je veux faire un p'tit script en bash mais je suis devant un probleme.
je dois gerer un nombre de variables inconnu (ou plutot saisi lors de l'execution du script)

le nombre de variables est $NB
les variables s'appelles $VAR1, $VAR2, ... $VARn

si je fais:

declare VAR$NB="texte"

cela fonctionne bien ( si $NB=2 j'ai bien $VAR2="texte")

mais si je veux reutiliser ma variable sans connaitre la valeur de $NB je bloque. en clair $VAR$NB ne marche pas, ${VAR$NB} non plus...

Donc si quelqu'un connais une syntaxe ou a une idée de contournement merci d'avance.

Francis.

Poste le Sunday 8 February 2004 11:51:43
Répondre     Citer    
Re: variables en bash
Envoyé par: ST

Essaye un des notations suivantes (je n'ai pas essayé moi-meme) :
$VAR\$NB
${VAR}${NB}
${VAR${NB}}

Poste le Sunday 8 February 2004 22:38:27
Répondre     Citer    
Re: variables en bash
Envoyé par: Svear

Tu es en train d'essayer de faire du pointeur en shell. Dans ta syntaxe "$var$nb" tu voudrais que le shell évalue "nb" dans une première passe puis qu'il évalue $var$nb"; bref qu'il travaille en indirection (pointeur)
Le problème est que le shell ne travaille qu'à un niveau.

Il te faut passer par "eval" qui lui est fait pour évaluer une expression

Il faut donc que tu écrives:
var2=Hello
nb=2
echo eval "\$var$nb"
Et tu auras "Hello" à l'écran

Si tu veux récupérer le contenu de "$var$nb" dans une variable "x" par exemple, tu peux faire
x=`eval echo "\$var$nb"`

et tu auras "Hello" qui ira dans ta variable "x".

C'est compliqué et peut-être qu'il y a plus simple mais je ne sais pas faire mieux...

Poste le Monday 9 February 2004 16:34:30
Répondre     Citer    
Re: variables en bash
Envoyé par: ct

dans un script on récupère le nombre de variables transmis dans le paramètre de position $#

si on lance monexe a b c d dans $# j'ai 4
Ca te sert ??

Poste le Tuesday 10 February 2004 08:50:39
Répondre     Citer    
Re: variables en bash
Envoyé par: Svear

J'ai oublié de dire que tu as le droit de faire des tableaux en bash et ksh
Exemple
prenom=(pierre paul jacques)
prenom[3]=alain
i=2

echo ${prenom[0]} # pierre
echo ${prenom[1]} # paul
echo ${prenom[$i]} # jacques
echo ${prenom[*]} # pierre paul jacques alain
echo ${prenom[@]} # 4

Poste le Tuesday 10 February 2004 10:09:55
Répondre     Citer    
Re: variables en bash
Envoyé par: Krizalid_h

Tu peux utilise $# pour connaître le nombre d'arguments entré par l'utilisateur. Avec ca allier à un tableau tu n'as plus vraiment de problème (enfin je l'espère...).






--
Is justice but weakness.
Try again and again and again...

Poste le Wednesday 11 February 2004 14:59:13
Répondre     Citer    
Re: variables en bash
Envoyé par: Cyber.T@Z

Salut a tous

merci des reponses et desole du retard de la mienne.

j'ai trouvé des reponses a ce que je cherchais sur un site d' *BSD ou il y a de nombreux exemples super bien fait (http://www.bsdbooks.net/shells/scripting/fr/bash2.html)

juste pour info avec les versions recentes de bash (mini la 2) la notation a des references indirectes (sorte de pointeurs) ce fait par ${!VAR}

ex:

a=b
b="coucou"
echo ${!a} #affiche coucou

Poste le Wednesday 11 February 2004 22:25:45
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
variables en bash
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