El comando eval en Bash Script
Este artículo trata sobre el uso de cadenas como comando en un script Bash. Para ello se utiliza el comando eval
.
Comando Eval en Bash Script
Hay ciertos scripts de Bash en los que debe crear una cadena utilizando variables o valores de entrada (por ejemplo) y ejecutarla como un comando al final. Para tales casos, eval
es la solución.
En Bash, el comando eval
evalúa parámetros de forma similar a un comando de shell. Los argumentos se combinan en una cadena y se envían al comando de shell, que luego ejecuta el comando.
En el shell actual, eval
ejecuta el comando. Este comando es conveniente cuando se ejecuta un comando con un operador específico o términos reservados.
Este comando también se puede usar en cualquier secuencia de comandos donde el nombre de la variable no se conoce hasta que se ejecuta la secuencia de comandos. Esta guía ayudará a los usuarios de Linux a comprender cómo usar este comando.
Sintaxis:
eval [arguments...]
Los argumentos
se pasan a este comando combinados como un literal de cadena y luego se envían a Bash para su ejecución. Este comando devuelve el estado de salida después de la ejecución del comando.
Si no se pasan argumentos a este comando o se pasa nulo
, devuelve 0
como estado de salida.
Cuente el número de líneas en un archivo usando eval
Supongamos que tenemos un archivo sample.txt
que contiene algunas líneas de texto. Si necesitamos contar el número de líneas en ese archivo, podemos usar el comando wc -l
.
Realizaremos esta tarea mediante el comando eval
. El comando será:
myComm="wc -l sample.txt"
eval $myComm
Veamos el resultado de esto.
Resolver operaciones aritméticas usando eval
Supongamos que necesitamos realizar algunas operaciones aritméticas. Podemos hacer esto usando el comando eval
.
Crearemos un script Bash para este propósito.
#!/bin/bash
a=4
b=5
comm1="`expr $a + $b`"
comm2="echo"
eval $comm2 $comm1
En este script, creamos dos variables que contienen dos comandos, uno para realizar operaciones aritméticas y el otro para un comando echo
. En la última línea, hemos pasado estas dos variables como argumentos al comando eval
.
eval
combinará estas dos variables y construirá un comando como el siguiente.
echo 'expr 4 + 5'
Después de la ejecución de este script, obtendremos el siguiente resultado.
Imprimir los valores de las variables usando eval
En el siguiente ejemplo, imprimiremos el valor de una variable que contiene otra variable.
#!/bin/bash
str1="my script"
str2=str1
comm="echo"
eval $comm \${$str2}
La salida del script anterior será:
Imprimir la suma de números usando eval
En el siguiente ejemplo, imprimiremos la suma de números que van del 1 al 4 utilizando un bucle for
en el script. Luego imprimiremos esa suma usando el comando eval
.
El script para este problema es:
#!/bin/bash
sum=0
for n in {1..4}
do
sum=$(($sum+$n))
done
comm="echo 'The result of sum from 1-4 is: '"
eval $comm $sum
La salida del script anterior será:
Conclusión
El comando eval
puede ejecutarse expresando cualquier comando Bash como una cadena. En esta lección, el comando eval
ejecuta varias tareas integradas de Bash y crea una secuencia de variables.
Después de leer esta lección, los usuarios comprenderán mejor el comando eval
y podrán utilizarlo para una variedad de aplicaciones.
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn