[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