SOS Variable dynamique en bash

Résolu/Fermé
yinkoh - Modifié par asevere le 12/05/2010 à 11:19
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 12 mai 2010 à 11:35
Bonjour,

Je souhaite enregistrer le résultat d'une fonction dans une variable:

idents=(a b c); 
count=${#idents[*]}; 
for ((i=0; i < $count; i++)); do 
    ident=${idents[${i}]}; 
    ${ident}=${i}; 
done


Je souhaiterai que soit crées les variables $a, $b, $c avec les valeurs 0, 1, 2

Comment faire svp ?

3 réponses

asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
12 mai 2010 à 11:18
Bonjour,

Fait simplement un eval de ton affectation :)
#!/bin/sh
idents=(a b c);
count=${#idents[*]};
for ((i=0; i < $count; i++)); do
ident=${idents[${i}]};
eval ${ident}=${i};
done 

echo $a
echo $b
echo $c


A plus
0
Grrrrrrr !

Je pensais l'avoir testé pourtant.


Merci.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
12 mai 2010 à 11:35
Salut,

#! /bin/bash
#set -xv

idents=(a b c);
count=${#idents[*]};
for ((i=0; i < $count; i++)); do
        ident=${idents[${i}]};
        eval "${ident}=${i}";
done
echo "${idents[0]} = $a"
echo "${idents[1]} = $b"
echo "${idents[2]} = $c"

$ sh foo.sh
a = 0
b = 1
c = 2
0