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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#! /bin/bash set -o errexit # the script ends if a command fails set -o pipefail # the script ends if a command fails in a pipe set -o nounset # the script ends if it uses an undeclared variable declare -a ARRAY; ARRAY=("cero" "uno" [3]="tres") ARRAY[2]="dos" LENGTH=${#ARRAY[*]} for (( i=0; i<LENGTH; i++ )); do echo $i=${ARRAY[i]} done |