Comando Bash Eval

Comando Bash Eval
El comando 'eval' se usa en bash para ejecutar argumentos como un comando shell. Los argumentos se unen en una cadena y se toman como entrada para el comando shell para ejecutar 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 usar en cualquier script también donde se desconoce el nombre de la variable hasta ejecutar 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 se combinan en una cadena que se ejecutará por 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'

Supongamos un archivo de texto llamado "departamento.TXT"Contiene el siguiente texto. El número total de líneas del archivo se puede contar mediante el comando 'WC'.

departamento.TXT

CSE
EEE
Ete
INGLÉS
BBA
FARMACIA

El siguiente comando almacenará el comando 'WC' para contar las líneas numéricas totales 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: Ejecutar el comando 'expr' usando 'eval'

Crear un archivo bash llamado evaluación.mierda y agregue el siguiente script. Este script asignará dos valores enteros en la variable $ x y $ y. Los comandos 'Expr' y 'Echo' se asignan en dos variables, $ C1 y $ C2 que se ejecutan más adelante mediante el comando 'eval'.

evaluación.mierda

#!/bin/bash
#Inicializar la variable x e y
x = 5
y = 15
#La variable de primer comando se usa para asignar el comando 'expr' para agregar los valores de $ x y $ y
c1 = "'expr $ x + $ y'"
#La segunda variable de comando se usa para asignar el comando 'echo'
C2 = "Echo"
#'eval' calculará e imprimirá la suma de $ x y $ y ejecutando los comandos de $ C1
y variables de $ C2
eval $ c2 $ c1

Ejecutar el guión.

$ Bash Evaltest.mierda

La suma de 5 y 15 es 20 que se muestra en la salida.

Ejemplo-3: imprima el valor de una variable que se asigna en otra variable

Crea un script bash llamado Evaltest2.SH con el siguiente guión. Aquí, se utiliza una variable para asignar el nombre de otra variable que contiene datos de cadena. El comando 'eval' imprimirá el valor de la variable que contiene el nombre de otra variable como contenido.

evaluación2.mierda

#!/bin/bash
# Asignar un valor de cadena en la variable, $ str1
str1 = "script de shell"
# Asignar el nombre de la variable, "STR1" a la variable $ str2
str2 = str1
#Sear el comando en la variable, $ comando
comando = "echo"
El comando # 'eval' ejecutará el comando 'echo' e imprimirá el valor de la variable
que contiene en otra variable
Eval $ comando \ $ $ str2

Ejecutar el guión.

$ Bash Evaltest2.mierda

El valor de la variable, $ str1 se imprime.

Hay otra forma de acceder al valor de una variable cuyo nombre es el valor de otra variable. Usando '!'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 = "shell script"; str2 = str1; comando = "echo"; Eval $ comando $ !str2

Ejemplo-4: cree una serie de variables con valores y calcule la suma de los valores utilizando el comando 'eval'

Cree un script bash llamado evaltest3.sh y agregar el siguiente script. Este script creará una serie de variables y almacenará los valores en las variables utilizando el comando 'eval'. Los valores de las variables se agregarán y almacenarán en una variable llamada $ sum. A continuación, el comando 'echo' con valores de cadena se asigna a una variable que se utiliza en el comando 'eval' para imprimir el valor de la variable $ suma.

evaltEST3.mierda

#!/bin/bash
# Inicializar la variable $ suma con el valor 0
suma = 0
# Declarar un bucle para iterer por 4 veces
para n en 1 ... 4
hacer
# Crear cuatro variables usando el comando eval
eval x $ n = $ n
# Agregue los valores de la variable con $ suma
suma = $ (($ suma+$ x $ n))
hecho
# Asignar el comando 'echo' con cadena en una variable
comando = "echo 'el resultado de la suma ='"
# comando # 'eval' Imprima el valor de suma usando variables
Eval $ comando $ suma

Ejecutar el guión.

$ Bash Evaltest3.mierda

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

Cree un archivo bash llamado EvalTest4.SH con el siguiente guión. Este script leerá tres argumentos de línea de comandos como nombres de archivo que se eliminarán y almacenarán los valores de argumento en una variable de matriz, $ FN. El comando 'RM' se almacena en un comando variable, $. Porque el bucle se declara aquí para recuperar cada nombre de archivo y elimine el archivo usando el comando 'eval' si el archivo existe.

evaluación4.mierda

#!/bin/bash
#Declare una matriz
declarar -A fn
# Lea tres argumentos de la línea de comando y almacéntele en tres índice de la matriz
fn [0] = $ 1
fn [1] = $ 2
fn [2] = $ 3
# Almacene el comando eliminar en una variable
comando = "RM"
# para el bucle iterará por tres veces para leer tres elementos de matriz
para el índice en 0 1 2
hacer
# Verifique el archivo o no existe
if [[-f $ fn [$ index]]]; entonces
# Si existe el archivo, elimine el archivo
Eval $ comando $ fn [$ index]
# Informe al usuario que se elimina el archivo
echo "$ fn [$ index] se elimina."
Demás
#Informe al usuario que el archivo no existe
echo "$ fn [$ index] no existe."
FI
hecho

Ejecutar el guión.

$ Bash Evaltest4.SH Marcas.artículo docx.producto txt.dogx

Aquí, se proporcionan tres nombres de archivo al momento de ejecutar el script. La salida muestra que marca.docx y producto.DOCX existe en la ubicación actual y se eliminan los archivos y, elemento.txt no existe en la ubicación actual.

Conclusión

Cualquier comando bash puede ser ejecutado mediante el comando 'eval' declarando como una cadena. El comando 'eval' se utiliza en este tutorial para ejecutar diferentes comandos incorporados 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 fines después de leer este tutorial.