Salida del comando BASH a la variable

Se deben ejecutar diferentes tipos de comandos bash desde el terminal según los requisitos del usuario. Cuando el usuario ejecuta cualquier comando desde el terminal, muestra la salida si no existe ningún error de lo contrario, muestra el mensaje de error. A veces, la salida del comando debe almacenarse en una variable para uso futuro. La función de sustitución de comandos de shell de bash se puede utilizar para este propósito. En este tutorial se muestra cómo puede almacenar diferentes tipos de comandos de shell en la variable usando esta función.

Sintaxis de sustitución de comandos:

variable=$(command)
variable=$(command [option…] argument1 arguments2 …)
variable=$(/path/to/command)

O

variable=`command`
variable=`command [option…] argument1 arguments2 …`
variable=`/path/to/command`

*** Nota: No use ningún espacio antes y después del signo igual cuando use los comandos anteriores.

Salida de comando único a una variable

Los comandos Bash se pueden usar sin ninguna opción ni argumento para aquellos comandos donde estas partes son opcionales. Los dos ejemplos siguientes muestran los usos de la sustitución de comandos simple.

Ejemplo 1:

El comando bash ` date` se usa para mostrar la fecha y hora actuales. La siguiente secuencia de comandos almacenará la salida del comando ` date` en la variable $ current_date mediante la sustitución de comandos.

$ current_date=$(date)
$ echo “Today is $current_date

Producción:

Ejemplo # 2:

El comando `pwd` muestra la ruta del directorio de trabajo actual. El siguiente script almacena la salida del comando `pwd` en la variable $ current_dir y el valor de esta variable se imprime usando el comando` echo` .

$ current_dir=`pwd`
$ echo “The current directory is : $current_dir

Producción:

Comando con opción y argumento

La opción y el argumento son obligatorios para algunos comandos de bash. Los siguientes ejemplos muestran cómo puede almacenar la salida del comando con opción y argumento en una variable.

Ejemplo # 3:

El comando Bash ` wc` se usa para contar el número total de líneas, palabras y caracteres de cualquier archivo. Este comando usa -c, -w y -l como opción y nombre de archivo como argumento para generar la salida. Cree un archivo de texto llamado fruit.txt con los siguientes datos para probar el siguiente script.
frutas.txt

fruits.txt
Mango
Orange
Banana
Grape
Guava
Apple

Ejecute los siguientes comandos para contar y almacenar el número total de palabras en el archivo fruit.txt en una variable, $ count_words e imprima el valor usando el comando ` echo` .

$ count_words=`wc -w fruits.txt`
$ echo “Total words in fruits.txt is $count_words

Producción:

Ejemplo # 4:

`cut` es otro comando de bash que usa una opción y un argumento para generar la salida. Cree un archivo de texto llamado weekday.txt con nombres de siete días de la semana para ejecutar el siguiente script.

weekday.txt

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

Cree un archivo bash llamado cmdsub1.sh con la siguiente secuencia de comandos. En este script, while loop se usa para leer el contenido del archivo weekday.txt línea por línea y leer los primeros tres caracteres de cada línea usando el comando ` cut` . Después de cortar, el valor de la cadena se almacena en la variable $ día . A continuación, si la declaración se usa para verificar, el valor de $ día es ‘ Sol’ o no. La salida imprimirá ‘ Domingo es el día festivo ‘ cuando, si la condición es verdadera, de lo contrario imprimirá el valor de $ día .

cmdsub1.sh

#!/bin/bash
filename=‘weekday.txt’
while read line do
day=`echo $line | cut -c 13`
if [ $day== “Sun” ]
then
echo “Sunday is the holiday”
else
echo $day
fi
done&lt$filename

Ejecute el script.

$ cat weekday.txt
$ bash cmdsub1.sh

Producción:

Usando la sustitución de comandos en bucle

Puede almacenar la salida de la sustitución de comandos en cualquier variable de ciclo que se muestra en el siguiente ejemplo.

Ejemplo # 5:

Cree un archivo llamado cmdsub2.sh con el siguiente código. Aquí, el comando ` ls -d * / ` se usa para recuperar toda la lista de directorios del directorio actual. El bucle for se usa aquí para leer cada directorio de la salida y almacenarlo en la variable $ dirname que se imprime más tarde.

cmdsub2.sh

#!/bin/bash
for dirname in $(ls -d */)
do
echo $dirname
done

Ejecute el script.

$ bash cmdsub2.sh

Producción:

Usar comandos anidados

En el ejemplo anterior se muestra cómo puede usar múltiples comandos usando tubería (|). Pero puede usar comandos anidados en la sustitución de comandos donde el resultado del primer comando depende del resultado del segundo comando y funciona de manera opuesta al comando de tubería (|).

Sintaxis de comandos anidados:

var=`command1 \`command\

Ejemplo # 6:

En este ejemplo se utilizan dos comandos, echo y who , como comando anidado. Aquí, ` que comando` ejecutará primero que imprime la información del usuario del usuario actualmente conectado. La salida del ` que comando` `ejecutará mediante eco comando` y la salida de ` echo ` almacenará en la variable $ var . En este caso, la salida de ` eco comando` depende de la salida de ` quien comando`.

$ var=`echo \`who\
$ echo $var

Producción:

Usando ruta de comando

Si conoce la ruta del comando, puede ejecutar el comando especificando la ruta del comando cuando utilice la sustitución de comandos. El siguiente ejemplo muestra el uso de la ruta de comando.

Ejemplo # 7:

El comando `whoami` muestra el nombre de usuario del usuario actualmente conectado. De forma predeterminada, este comando se almacena en la carpeta / usr / bin / . Ejecute el siguiente script para ejecutar el comando ` whoami` usando la ruta y almacenar en la variable, $ salida, e imprimir el valor de $ salida .

$ output=$(/usr/bin/whoami)
$ echo $output

Producción:

Usando el argumento de la línea de comando

Puede utilizar el argumento de la línea de comandos con el comando como argumento en la sustitución de comandos.

Ejemplo # 8:

Cree un archivo bash llamado cmdsub3.sh con la siguiente secuencia de comandos. ` Nombre base comando ‘se utiliza aquí para recuperar el nombre de archivo del 2 nd argumento de línea de comandos y se almacena en la variable, $ archivo . Sabemos que el primer argumento de la línea de comandos es el nombre del script en ejecución, que se indica con $ 0.

#!/bin/bash
filename=`basename $1`
echo “The name of the file is $filename.”

Ejecute el script con el siguiente valor de argumento.

$ bash cmdsub3.sh Desktop/temp/hello.txt

Aquí, el nombre base de la ruta, Desktop / temp / hello.txt es ‘ hello.txt ‘. Entonces, el valor de $ filename será hello.txt .

Producción:

Conclusión:

En este tutorial se muestran varios usos de las sustituciones de comandos. Si necesita trabajar con varios comandos o comandos dependientes y almacenar el resultado temporalmente para realizar otras tareas más adelante, puede usar esta función en su secuencia de comandos para obtener el resultado.

Más información en el video:

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux