Establecer variable en la salida del comando en Bash

Fumbani Banda 30 enero 2023
  1. Sustitución de comandos en Bash
  2. Salida de comando Bash a variable
Establecer variable en la salida del comando en Bash

Este tutorial demuestra cómo asignar la salida de un comando a una variable en bash mediante la sustitución de comandos.

Sustitución de comandos en Bash

La sustitución de comandos es una característica de bash que nos permite ejecutar comandos de Linux y almacenar la salida del comando en una variable de bash. Una vez que se ejecuta un comando utilizando la sintaxis de sustitución de comandos, la salida estándar del comando reemplaza el comando y se eliminan los saltos de línea finales.

La sustitución de comandos utiliza dos sintaxis diferentes para almacenar la salida del comando en una variable.

El primer tipo de sintaxis coloca el comando entre paréntesis y agrega un signo $ al principio, como se muestra a continuación.

Cada carácter dentro del paréntesis se trata como parte del comando.

output=$(command)
output=$(command argument-1)
output=$(/path/to/command)
output=$(/path/to/command argument-1)

El segundo tipo de sintaxis usa acentos graves alrededor del comando.

output=`command`
output=`command argument-1`
output=`/path/to/command`
output=`/path/to/command argument-1`

Salida de comando Bash a variable

Usamos los siguientes ejemplos para demostrar la sustitución de comandos en un script bash.

A continuación, usamos la primera sintaxis de paréntesis y un signo de dólar al principio. Se ejecuta el comando whoami, y la salida reemplaza el comando, que luego se asigna a la variable user. Usamos el comando echo para mostrar el mensaje a la salida estándar.

user=$(whoami)
echo "The logged in user is $user"

Al ejecutar este script, se muestra el siguiente resultado.

The logged in user is delftstack

A continuación, usamos la sintaxis de backticks. La salida del comando whoami se asigna a la variable user, y echo se utiliza para imprimir el mensaje en la terminal.

user=`whoami`
echo "The logged in user is $user"

Al ejecutar el script, se muestra el resultado a continuación.

The logged in user is delftstack

En el siguiente script, usamos ls para listar el contenido de la carpeta delftstack usando paréntesis y la sintaxis del signo de dólar. La salida del comando ls se asigna a la variable files. El comando echo se utiliza para imprimir el contenido de la variable files en el terminal.

files=$(ls -l delftstack)
echo "$files"

Ejecutar el script imprime la siguiente salida en la salida estándar.

total 4
-rw-r--r-- 1 fumba fumba  752 Nov 17 12:51 directory.sh
-rw-r--r-- 1 fumba fumba   79 Nov 19 13:11 foo1.sh
drwxr-xr-x 1 fumba fumba 4096 Nov 22 13:57 part
-rw-r--r-- 1 fumba fumba  213 Nov 21 21:10 regex.sh

El siguiente script bash usa la sintaxis de acentos graves para asignar la salida del comando ls a la variable files, y el comando echo se usa para imprimir el contenido de la variable files a la salida estándar.

files=`ls -l delftstack`
echo "$files"

Al ejecutar el script, se muestra el siguiente resultado.

total 4
-rw-r--r-- 1 fumba fumba  752 Nov 17 12:51 directory.sh
-rw-r--r-- 1 fumba fumba   79 Nov 19 13:11 foo1.sh
drwxr-xr-x 1 fumba fumba 4096 Nov 22 13:57 part
-rw-r--r-- 1 fumba fumba  213 Nov 21 21:10 regex.sh

Usamos la siguiente sintaxis para asignar un comando de varias líneas a una variable en el script bash.

variable_name=$(command \ 
argument 1 \ 
argument 2 \ 
argument 3)

El siguiente script bash demuestra cómo asignar la salida de un comando multilínea a una variable. El comando ls enumera todo el contenido de la carpeta actual, y la salida se canaliza al comando head. El comando head solo selecciona las primeras 5 líneas de la entrada de ls y canaliza la salida al comando grep. El comando grep hace coincidir la línea con la palabra flow y la imprime en la salida estándar.

files=$(ls -l \
| \
head -5 \
| grep -i "flow")

echo $files

Al ejecutar el script, se muestra el siguiente resultado.

drwxr-xr-x 1 fumba fumba 4096 Sep 30 09:29 airflow
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Artículo relacionado - Bash Output