SOS Variable dynamique en bash

[Résolu/Fermé]
Signaler
-
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
-
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

Messages postés
13085
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
13 juillet 2021
418
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
Grrrrrrr !

Je pensais l'avoir testé pourtant.


Merci.
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 872
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