Salida del comando BASH a la variable

Bash Command Output 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 la 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.

variable=$(mando)
variable=$(mando [opción…]argument1 arguments2 …)
variable=$(/sendero/para/mando)

O







variable=`mando`
variable=`mando [opción…]argument1 arguments2 …`
variable=`/sendero/para/mando`

*** 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 siguientes dos ejemplos muestran los usos de la sustitución de comandos simple.



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 la sustitución de comandos.





$fecha actual=$(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 usando `echo` mando.

$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 de 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. Crea un archivo de texto llamado frutas.txt con los siguientes datos para probar el siguiente script.
frutas.txt

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 ` echo` mando.

$count_words=`WC -enfrutas.txt`
$echo 'El total de palabras en fruit.txt es$ count_words'

Producción:

Ejemplo # 4:

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

weekday.txt

lunes
martes
miércoles
jueves
viernes
sábado
domingo

Crea un archivo bash llamado cmdsub1.sh con el siguiente script. En este guión, tiempo bucle se utiliza para leer el contenido de weekday.txt archivo línea por línea y lea los primeros tres caracteres de cada línea usando ` cortar` mando. Después del corte, 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á ' El domingo es el feriado 'Cuando si la condición es verdadera, de lo contrario, imprimirá el valor de $ día .

cmdsub1.sh

#! / bin / bash
nombre del archivo='weekday.txt'
tiempo leerlínea;hacer
día=`echo $ línea | Corte -c 1-3`
si [ $ día=='Sol' ]
luego
echo 'El domingo es la fiesta'
demás
echo $ día
ser
hecho<$ nombre de archivo

Ejecute el script.

$gatoweekday.txt
$intentocmdsub1.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:

Crea un archivo llamado cmdsub2.sh con el siguiente código. Aquí, ' ls -d * / El comando `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
por dirname en$(ls -D */)
hacer
echo '$ dirname'
hecho

Ejecute el script.

$intentocmdsub2.sh

Producción:

Usar comandos anidados

En el ejemplo anterior se muestra cómo puede usar múltiples comandos usando pipe (|). 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 comando anidado:

dónde=`comando1 `mando``

Ejemplo # 6:

Dos comandos, ` echo `y` OMS `se utilizan en este ejemplo como el comando anidado. Aquí, ' OMS El comando `se ejecutará primero que imprime la información del usuario actualmente conectado. La salida de la ' OMS `comando se ejecutará por` echo `comando y la salida de` echo `se almacenará en la variable $ var . Aquí, la salida de ' echo `comando depende de la salida de` OMS `comando.

$dónde=`echo`OMS``
$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:

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

$producción=$(/usr/soy/quién soy)
$echo $ salida

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:

Crea un archivo bash llamado cmdsub3.sh con el siguiente script. ' nombre de base El comando `se usa aquí para recuperar el nombre de archivo del 2Dakota del Norteargumento de línea de comando y almacenado en la variable, $ nombre de archivo . Conocemos el 1S tEl argumento de la línea de comandos es el nombre del script en ejecución que se indica con $ 0.

#! / bin / bash
nombre del archivo=`nombre de base $1`
echo 'El nombre del archivo es$ nombre de archivo.'

Ejecute el script con el siguiente valor de argumento.

$intentocmdsub3.sh Escritorio/temperatura/hola.txt

Aquí, el nombre base del camino, Escritorio / temp / hello.txt es ' hola.txt '. Entonces, el valor de la $ nombre de archivo estarán hola.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: