SOS Variable dynamique en bash

Résolu
yinkoh -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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 ?
A voir également:

3 réponses

asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
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
yinkoh
 
Grrrrrrr !

Je pensais l'avoir testé pourtant.


Merci.
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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