La commande eval

Syntaxe :

eval expr1 expr2 ..... exprn

La commande eval permet de faire subir à une ligne de commande une double évaluation.

Exemple :

Initialisation de la variable nom

$ nom=toto

Initialisation de la variable var avec le nom de la variable définie ci dessus

$ var=nom

Affichage des valeurs des variables

$ echo $nom
toto
$ echo $var
nom
$ echo \$$var
$nom
$

Pour obtenir $var=toto, il faut obligatoirement utiliser la commande eval de cette manière

$ eval echo \$$var
toto
$

La commande eval évalue en premier la variable $var, le premier $ étant protégé par un anti-slash

==> eval echo \$nom

puis évalue le résultat de la première évaluation, c'est à dire $nom (suppression de l'anti-slash)

==> eval echo $nom

Initialisation de la variable var2

$ var2=\$$var
$ echo $var2
$nom
$ eval var2=\$$var
$ echo $var2
toto
$