Comandos de Linux

Comando Bash eval

Comando Bash eval
El comando 'eval' se usa en bash para ejecutar argumentos como un comando de shell. Los argumentos se unen en una cadena y se toman como entrada para que el comando de shell ejecute el comando. 'eval' ejecuta el comando en el shell actual. Este comando es útil cuando requiere ejecutar cualquier comando que contenga un operador especial o palabras clave reservadas. Este comando se puede utilizar en cualquier script también donde se desconoce el nombre de la variable hasta que se ejecuta el script. Este tutorial ayudará a los usuarios de Linux a aprender el uso de este comando.

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

CSE
EEE
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 $ mycommand

Producció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.sh

La 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.sh

Se 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 $ !str2

Ejemplo-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.sh

La 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.docx

Aquí, 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.

Cómo mostrar la superposición de OSD en aplicaciones y juegos de Linux en pantalla completa
Jugar juegos en pantalla completa o usar aplicaciones en modo de pantalla completa sin distracciones puede aislarlo de la información relevante del si...
Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...
Cómo desarrollar un juego en Linux
Hace una década, no muchos usuarios de Linux predecían que su sistema operativo favorito algún día sería una plataforma de juegos popular para videoju...