El comando eval permite la realización de una doble evaluación en la línea de comandos. Recibe como argumento un conjunto de expresiones en el que efectúa las operaciones siguientes:
- Primera etapa: los caracteres especiales contenidos en las expresiones se tratan. El resultado del tratamiento genera una o varias expresiones: eval otra_exp1 otra_exp2 … otra_expn. La expresión otra_exp1 representará el comando Unix que se debe ejecutar en la segunda etapa.
- Segunda etapa: eval va a ejecutar el comando otra_exp1 otra_exp2 … otra_expn. Sin embargo, previamente, esta línea se va a someter a una nueva evaluación. Los caracteres especiales se tratan y después el comando se lanza.
#!/bin/bash
nombre=gonzalo
apellido=reiser
direccion=teatinos
pais=chile
var=nombre
eval echo \$$var
var=apellido
eval echo \$$var
var=direccion
eval echo \$$var
var=pais
eval echo \$$var