[Linux] Question bash - creation de variable
Stephane Casset
sept@::1
Mar 1 Juil 00:53:08 CEST 2008
Le Sat, Jun 28, 2008 at 04:00:41PM +0200, Daniel Huhardeaux écrivait :
> Jean BENOIT a écrit :
> >On Sat, Jun 28, 2008 at 01:56:30PM +0200, Daniel Huhardeaux wrote:
> >
> >>j'aimerai créer des variables avec un prefixe flottant (ex:
> >>env1_MaVariable et env2_MaVariable). Mon idée:
> >>
> >>#!/bin/bash
> >>
> >>prefix1=env1_
> >>prefix2=env2_
> >>set ${prefix1}MaVariable=valeur1
> >>set ${prefix2}MaVariable=valeur2
> >>
> >
> >Le problème vient du fait que la commande "set" ne fixe pas la valeur
> >d'une variable :
> >
> > $set a=1
> > $echo $a
> >
> > $
> >
> >On peut s'en sortir ainsi :
> >
> > eval ${prefix1}MaVariable=valeur1
> > eval ${prefix2}MaVariable=valeur2
> >
> >Je ne suis pas sur que ton idée soit très pratique à l'usage
> Ce n'est pas tout à fait cela. Je reprend mon schéma: j'ai une liste de
> numéros de chambre et aimerai avoir des variables prefixées ou suffixées
> par le numéro de chambre. Exemple:
>
> #!/bin/bash
>
> prefix1=env1_
> prefix2=env2_
>
>
> LISTE="101 102 103"
>
> for p in $LISTE; do
> ${prefix1}VAR$p="default"
eval ${prefix1}VAR$p="default"
comme le suggère Jeannot ! ;p
> export ${prefix1}VAR$p
> done
Avec cette correction j'ai :
$printenv
env1_VAR101=default
env1_VAR102=default
env1_VAR103=default
p=103
prefix1=env1_
prefix2=env2_
C'est pas ce que tu veux ?
> ce qui me créerait les variables env1_VAR101, env1_VAR102 et env1_VAR103
> ayant toutes comme valeur "default" et qui seraient exportées dans mon
> environnement. Le contenu de ces variables peut également avoir été
> modifié au préalable par un:
Ha ben si ! ;p
> ${prefix1}VAR$p=$(/bin/cat ${prefix1}VAR$p)
eval ${prefix1}VAR$p=$(/bin/cat ${prefix1}VAR$p)
A+
--
Stéphane Casset LOGIDÉE sàrl Se faire plaisir d'apprendre
1a, rue Pasteur Tel : +33 388 23 69 77 casset@::1
F-67540 OSTWALD Fax : +33 388 23 69 77 http://logidee.com
Plus d'informations sur la liste de diffusion linux