[Linux] Question bash - creation de variable

Daniel Huhardeaux daniel.huhardeaux@::1
Sam 28 Juin 16:00:41 CEST 2008


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"
    export ${prefix1}VAR$p
done

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:

${prefix1}VAR$p=$(/bin/cat ${prefix1}VAR$p)

qui est un fichier portant le nom de la variable et stocker dans un 
répertoire. Par ex, si le fichier env1_VAR102 dans ce répertoire 
contient "personnel", la variable env1_VAR102 contiendra alors cette valeur.

Le but est de stocker des valeurs de variables qui doivent être non 
volatiles et pouvoir récupérer ces valeurs en cas d'arrêt ou crash de 
l'application ou extinction de la machine.

Merci pour ton aide

-- 
Daniel  Huhardeaux       _____ ____ ____ _____ _____ _
enum    +33 368 460 088 (_  __) _  ) _  (_  __) _  _(_)  +48 22 489 9531
iaxtel   1-700-849-6983  / / / // / // / / / / /_/ / /
sip/iax:callto  101@::1/_/ ( ___( ___/ /_/ (_/ (_/_/.net    FWD# 422493



Plus d'informations sur la liste de diffusion linux