Salida del comando BASH a la variable

Salida del comando BASH a la variable
Se deben ejecutar diferentes tipos de comandos bash desde el terminal en función de los requisitos del usuario. Cuando el usuario ejecuta cualquier comando desde el terminal, entonces muestra la salida si no existe un error, de lo contrario muestra el mensaje de error. A veces, la salida del comando debe almacenarse en una variable para uso futuro. La característica de sustitución de comandos de shell de BASH se puede utilizar para este propósito. La forma en que puede almacenar diferentes tipos de comandos de shell en la variable utilizando esta función se muestra en este tutorial.

Sintaxis de sustitución de comandos:

variable = $ (comando)
variable = $ (comando [opción ...] argumento1 argumentos2 ...)
variable = $ (/path/to/command)

O

variable = 'comando'
variable = 'comando [opción ...] argumento1 argumentos2 ...'
variable = '/path/to/command'

*** Nota: no use ningún espacio antes y después del signo igual cuando se usa los comandos de arriba.

Salida de comando único a una variable

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

Ejemplo 1:

Bash 'fecha' El comando se usa para mostrar la fecha y hora actuales. El siguiente script almacenará la salida de 'fecha' comando en $fecha actual variable mediante el uso de la sustitución del comando.

$ current_date = $ (fecha)
$ echo "hoy es $ current_date"

Producción:

Ejemplo#2:

'PWD' El comando muestra la ruta del directorio de trabajo actual. El siguiente script almacena la salida de 'PWD' comando en la variable, $ Current_Dir y el valor de esta variable se imprime utilizando 'eco' dominio.

$ current_dir = 'pwd'
$ echo "El directorio actual es: $ current_dir"

Producción:

Comando con opción y argumento

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

Ejemplo#3:

Bash 'WC' El comando 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. Crear un archivo de texto llamado frutas.TXT con los siguientes datos para probar el siguiente script.
frutas.TXT

mango
Naranja
Banana
Uva
Guayaba
Manzana

Ejecute los siguientes comandos para contar y almacenar el número total de palabras en el frutas.TXT Archivo en una variable, $ count_words e imprima el valor usando 'eco' dominio.

$ count_words = 'wc -w frutas.TXT'
$ echo "palabras totales en frutas.txt es $ count_words "

Producción:

Ejemplo#4:

'cortar' es otro comando bash que usa la opción y el argumento para generar la salida. Crear un archivo de texto llamado día laborable.TXT con nombres de siete semanas para ejecutar el siguiente guión.

día laborable.TXT

Lunes
Martes
Miércoles
Jueves
Viernes
Sábado
Domingo

Crear un archivo bash llamado cmdsub1.mierda Con el siguiente script. En este guión, mientras el bucle se usa para leer el contenido de día laborable.TXT Archivo Línea por línea y lea los primeros tres caracteres de cada línea usando 'cortar' dominio. 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 se imprimirá 'El domingo es la fiesta'Cuando si la condición es verdadera, de lo contrario imprimirá el valor de $ día.

cmdsub1.mierda

#!/bin/bash
FileName = 'Weekday.TXT'
Mientras lea la línea; hacer
día = 'echo $ line | Cortar -C 1-3 '
Si [$ day == "Sun"]
entonces
Echo "El domingo es la fiesta"
demás
echo $ día
FI
hecho<$filename

Ejecutar el guión.

$ gato de semana.TXT
$ bash cmdsub1.mierda

Producción:

Usando la sustitución del comando en bucle

Puede almacenar la sustitución de la salida del comando en cualquier variable de bucle que se muestra en el siguiente ejemplo.

Ejemplo#5:

Crea un archivo llamado cmdsub2.mierda Con el siguiente código. Aquí, 'ls -d */'El comando se utiliza para recuperar toda la lista de directorio del directorio actual. Para el bucle se usa aquí para leer cada directorio desde la salida y almacenarlo en la variable $ Dirname que se imprime más tarde.

cmdsub2.mierda

#!/bin/bash
para Dirname en $ (ls -d */)
hacer
echo "$ dirname"
hecho

Ejecutar el guión.

$ bash cmdsub2.mierda

Producción:

Uso de comandos anidados

La forma en que puede usar múltiples comandos usando Pipe (|) se muestra en el ejemplo anterior. Pero puede usar comandos anidados en la sustitución del comando donde la salida del primer comando depende de la salida del segundo comando y funciona opuesto al comando tubería (|).

Sintaxis de comando anidado:

var = 'command1 \' command \ "

Ejemplo#6:

Dos comandos, 'eco' y 'OMS'se usan en este ejemplo como el comando anidado. Aquí, 'OMS'El comando ejecutará primero que imprima la información del usuario del usuario iniciado actualmente. La salida del 'OMS'El comando se ejecutará por'eco'Comando y la salida de'eco'se almacenará en la variable $ var. Aquí, la salida de 'eco'El comando depende de la salida de'OMS' dominio.

$ var = 'echo \' quién \ "
$ echo $ var

Producción:

Uso de la ruta de comando

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

Ejemplo#7:

'quién soy' El comando muestra el nombre de usuario del usuario registrado actualmente. Por defecto, este comando se almacena en /USR/papelera/ carpeta. Ejecute el siguiente script para ejecutar 'quién soy' comando usar ruta y almacenar en la variable, $ salida, e imprima el valor de $ salida.

$ output = $ (/usr/bin/whoami)
$ echo $ producción

Producción:

Uso del argumento de línea de comandos

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

Ejemplo#8:

Crear un archivo bash llamado cmdsub3.mierda Con el siguiente script. 'nombre de base'El comando se usa aquí para recuperar el nombre de archivo de los 2Dakota del Norte argumento de línea de comando y almacenado en la variable, $ nombre de archivo. Sabemos el 1calle El argumento de la línea de comandos es el nombre del script ejecutivo que se denota por $ 0.

#!/bin/bash
FileName = 'Basename $ 1'
echo "El nombre del archivo es $ nombre de archivo."

Ejecute el script con el siguiente valor de argumento.

$ bash cmdsub3.sh de escritorio/temp/hola.TXT

Aquí, el nombre de base del camino, Escritorio/temp/hola.TXT es 'Hola.TXT'. Entonces, el valor del $ nombre de archivo será Hola.TXT.

Producción:

Conclusión:

Varios usos de las sustituciones de comandos se muestran en este tutorial. Si necesita trabajar con múltiples comandos o comandos dependidos y almacenar el resultado temporal para hacer otras tareas más adelante, puede usar esta función en su script para obtener la salida.

Más información en el video: