El comando eval en Bash Script

Muhammad Husnain 20 junio 2023
  1. Comando Eval en Bash Script
  2. Conclusión
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.

Contar el número de líneas en un archivo

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.

Resolver operaciones aritméticas usando eval

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 los valores de las variables

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á:

salida de suma de numeros

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.

Muhammad Husnain avatar Muhammad Husnain avatar

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

Artículo relacionado - Bash Eval