Sintaxis:
eval [argumento ...]Aquí, los argumentos se analizan y combinan en una cadena que ejecutará el shell. 'eval' devuelve un código de estado de salida después de ejecutar el comando. 'eval' devuelve 0 como código de estado de salida si no se proporciona ningún argumento o solo se proporciona un argumento nulo.
Ejemplo-1: Ejecute el comando 'wc' usando 'eval'
Suponga un archivo de texto llamado "Departamento.TXT"Contiene el siguiente texto. El número total de líneas del archivo se puede contar con el comando 'wc'.
Departamento.TXT
CSEEEE
ETE
INGLÉS
BBA
FARMACIA
El siguiente comando almacenará el comando 'wc' para contar el número total de líneas del archivo, Departamento.TXT a la variable, $ mycommand.
$ mycommand = "wc -l departamento.TXT"El siguiente comando 'eval' ejecutará el comando 'wc' e imprimirá el número total de líneas.
$ eval $ mycommandProducción:
La salida muestra que Departamento.TXT el archivo tiene 6 líneas.
Examplel-2: Ejecute el comando 'expr' usando 'eval'
Crea un archivo bash llamado evaltest.sh y agregue el siguiente script. Este script asignará dos valores enteros a la variable $ x y $ y. Los comandos 'expr' y 'echo' se asignan a dos variables, $ c1 y $ c2, que se ejecutan más tarde mediante el comando 'eval'.
evaltest.sh
#!/ bin / bash#Inicializa la variable xey
x = 5
y = 15
# La primera variable de comando se usa para asignar el comando 'expr' para sumar los valores de $ x y $ y
c1 = "'expr $ x + $ y'"
# La segunda variable de comando se usa para asignar el comando 'echo'
c2 = "eco"
# 'eval' calculará e imprimirá la suma de $ x y $ y ejecutando los comandos de $ c1
y $ c2 variables
eval $ c2 $ c1
Ejecuta el script.
$ bash evaltest.shLa suma de 5 y 15 es 20 que se muestra en la salida.
Ejemplo-3: Imprime el valor de una variable que está asignada en otra variable
Cree un script de bash llamado evaltest2.sh con el siguiente script. Aquí, una variable se usa para asignar el nombre de otra variable que contiene una cadena de datos. El comando 'eval' imprimirá el valor de la variable que contiene el nombre de otra variable como contenido.
evaltest2.sh
#!/ bin / bash# Asignar un valor de cadena a la variable, $ str1
str1 = "Script de Shell"
# Asignar el nombre de la variable, "str1" a la variable $ str2
str2 = str1
#Guarde el comando en la variable $ command
comando = "eco"
# El comando 'eval' ejecutará el comando 'echo' e imprimirá el valor de la variable
que contiene en otra variable
eval $ comando \ $ $ str2
Ejecuta el script.
$ bash evaltest2.shSe imprime el valor de la variable $ str1.
Hay otra forma de acceder al valor de una variable cuyo nombre es el valor de otra variable. Utilizando '!'símbolo se puede acceder al valor de este tipo de variable. El siguiente comando se puede utilizar como una alternativa del script anterior y la salida será la misma.
$ str1 = "Script de Shell"; str2 = str1; comando = "eco"; eval $ comando $ !str2Ejemplo-4: Cree una serie de variables con valores y calcule la suma de los valores usando el comando 'eval'
Cree un script de bash llamado evaltest3.sh y agregue el siguiente script. Este script creará una serie de variables y almacenará los valores en las variables usando el comando 'eval'. Los valores de las variables se agregarán y almacenarán en una variable llamada $ suma. A continuación, el comando 'echo' con valores de cadena se asigna a una variable que se usa en el comando 'eval' para imprimir el valor de la variable $ sum.
evaltest3.sh
#!/ bin / bash# Inicializa la variable $ suma con el valor 0
suma = 0
# Declare un bucle for que se repetirá 4 veces
para n en 1… 4
hacer
# Crea cuatro variables usando el comando eval
eval x $ n = $ n
# Suma los valores de la variable con $ suma
suma = $ (($ suma + $ x $ n))
hecho
# Asignar el comando 'echo' con una cadena en una variable
command = "echo 'El resultado de la suma ='"
# El comando 'eval' imprime el valor de la suma usando variables
eval $ comando $ suma
Ejecuta el script.
$ bash evaltest3.shLa suma de las cuatro variables es, 1 + 2 + 3 + 4 = 10 que se imprime.
Ejemplo-5: uso del comando 'eval' para eliminar la lista de archivos
Crea un archivo bash llamado evaltest4.sh con el siguiente script. Este script leerá tres argumentos de la línea de comandos como nombres de archivo que se eliminarán y almacenará los valores de los argumentos en una variable de matriz, $ fn. El comando 'rm' se almacena en una variable, $ comando. El bucle for se declara aquí para recuperar cada nombre de archivo y eliminar el archivo usando el comando 'eval' si el archivo existe.
evaltest4.sh
#!/ bin / bash#Declarar una matriz
declarar -A fn
# Lea tres argumentos de la línea de comando y almacénelos en tres índices de la matriz
fn [0] = $ 1
fn [1] = $ 2
fn [2] = $ 3
# Almacene el comando de eliminación en una variable
comando = "rm"
# El bucle for se repetirá tres veces para leer tres elementos de la matriz
para índice en 0 1 2
hacer
# Compruebe que el archivo existe o no existe
si [[-f $ fn [$ índice]]]; luego
# si el archivo existe, elimínelo
eval $ comando $ fn [$ index]
# Informar al usuario que el archivo se eliminó
echo "$ fn [$ index] se borra."
Demás
# Informar al usuario que el archivo no existe
echo "$ fn [$ index] no existe."
fi
hecho
Ejecuta el script.
$ bash evaltest4.marcas de sh.elemento docx.producto txt.docxAquí, se proporcionan tres nombres de archivo en el momento de ejecutar el script. La salida muestra que las marcas.docx y producto.docx existen en la ubicación actual y los archivos se eliminan y, el elemento.txt no existe en la ubicación actual.
Conclusión
Cualquier comando bash puede ser ejecutado por el comando 'eval' declarando como una cadena. El comando 'eval' se usa en este tutorial para ejecutar diferentes comandos integrados de bash y crear una serie de variables. Los usos del comando 'eval' se borrarán para los usuarios y podrán usar este comando para varios propósitos después de leer este tutorial.