Logotipo de Zephyrnet

¿Cómo guardar la salida del comando como variable en Bash?

Fecha:

Introducción

En scripts bash, asignar la salida de un comando a variables puede ser conveniente almacenando las salidas de los comandos y usándolas más tarde.

En esta breve guía, veremos cómo puede almacenar la salida de un comando como una variable en Bash.

Los conceptos básicos para configurar variables

Guardar la salida de un comando como una variable se logra mediante sustitución de comando. La sustitución de comandos es un contenedor que ejecuta el comando en un entorno de subcapay reemplaza el comando envuelto con la salida estándar del entorno en el que se ejecutó el comando. ¡Esta salida se puede referenciar más tarde, si está conectada a una variable de referencia!

La sustitución de comandos se puede lograr mediante acentos graves o el signo de dólar entre paréntesis:

`command`

$(command)

Hay debate sobre si `comando` (comillas invertidas) o $ (comando) (signo de dólar y paréntesis) debe usarse como la "mejor práctica". $(command) funciona bien en el anidamiento y mejora la legibilidad en algunos casos, pero puede usar cualquiera de las dos sintaxis en los ejemplos anteriores.

Dicho esto, asignar la salida de un comando a una variable en Bash es tan fácil como:

VARIABLE=$(command)
echo "${VARIABLE}"

Correr ${variable} se conoce como expansión de parámetros, y se utiliza para evaluar y obtener el valor asociado a una variable de referencia.

Ahora echemos un vistazo al ejemplo simple de configurar una variable para un comando para cambiar el color de salida:

#!/bin/bash
GREEN=$(tput setaf 2)
echo "${GREEN}Please"

ORANGE=$(tput setaf 9)
echo "${ORANGE}Visit"

echo "${GREEN}Paris"

En el fragmento, hemos usado el tput comando y asignó el valor devuelto de esos comandos para imprimir texto colorido. los setaf cambia el color de primer plano, y 3 (verde) y 9 (naranja) son códigos de color.

Ahora pasaremos a otro ejemplo que contiene múltiples condiciones para configurar variables para diferentes comandos:

#!/bin/bash
PERSON=$(whoami)
echo -e "Hey ${PERSON}! I am Charlien"

DETAILS=$(uname -a)
echo -e "You're running this script on:n${DETAILS}n"

DATES=$(date)
echo -e "The script is being run on:n${DATES}n"

CREATE=$(touch $(date +"%d%m%Y").txt)
echo -e "A text file logging this run is created.${CREATE}n"

LOCATION=$(ls 
  -l *txt)
echo -e "Saved text file at: ${LOCATION}"

En el guión anterior, el whoami El comando devuelve el nombre de usuario del usuario actual. los uname -a devuelve la información del sistema, y ​​el date devuelve la hora y la fecha actual.

Nota: Podemos encadenar la asignación de variables agregando varios comandos en una sola llamada anidada. los CREATE La variable contiene la salida del touch comando, que a su vez crea un archivo y establece el nombre de archivo en la salida del date +"%d%m%Y mando.

Consulte nuestra guía práctica y práctica para aprender Git, con las mejores prácticas, los estándares aceptados por la industria y la hoja de trucos incluida. Deja de buscar en Google los comandos de Git y, de hecho, aprenden ella!

Finalmente, agregamos un multiline concepto de asignación de variable de comando agregando una barra invertida () entre las ls comando -l marca para mostrar solo archivos de texto usando *.txt. La barra invertida es un carácter de escape que informa al shell que no interprete el siguiente carácter.

En echo comando, agregamos el -e bandera para usar el carácter especial, es decir, n (nueva línea), para imprimir la salida en la nueva línea.

Obtenemos el siguiente resultado después de ejecutar el script:

$ ./variable.sh

Conclusión

En esta breve guía, hemos analizado cómo puede establecer la salida de un comando en una variable en Bash. Hemos echado un vistazo a la diferencia entre las sintaxis para sustitución de comando, teniendo en cuenta las mejoras de legibilidad de $(command) sobre la sustitución basada en backtick. Luego, hemos echado un vistazo a varios ejemplos de asignación simple y asignación de salida encadenada/anidada.

punto_img

Información más reciente

café vc

café vc

punto_img