SOS Variable dynamique en bash

Résolu
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

  1. Webmaster
    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
    1. Modérateur
      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