Cómo asignar la salida de un comando de Linux a una variable


Cuando ejecuta un comando, produce algún tipo de salida: se supone que el resultado de un programa produce o mensajes de estado/error de los detalles de ejecución del programa. A veces, es posible que desee almacenar la salida de un comando en una variable para utilizarla en una operación posterior.

En esta publicación, revisaremos las diferentes formas de asignar la salida de un comando de shell a una variable, específicamente útil para fines de scripting de shell.

Para almacenar la salida de un comando en una variable, puede utilizar la función de sustitución de comandos de shell en los formularios siguientes:

variable_name=$(command)
variable_name=$(command [option ...] arg1 arg2 ...)
OR
variable_name='command'
variable_name='command [option ...] arg1 arg2 ...'

A continuación se muestran algunos ejemplos del uso de la sustitución de comandos.

En este primer ejemplo, almacenaremos el valor del comando who (que muestra quién está conectado al sistema) en la variable CURRENT_USERS usuario:

$ CURRENT_USERS=$(who)

Luego podemos usar la variable en una oración que se muestra usando el comando echo así:

$ echo -e "The following users are logged on the system:\n\n $CURRENT_USERS"

En el comando anterior: la bandera -e significa interpretar cualquier secuencia de escape (como para nueva línea) utilizado. Para evitar perder tiempo y memoria, simplemente realice la sustitución del comando dentro del comando echo de la siguiente manera:

$ echo -e "The following users are logged on the system:\n\n $(who)"

A continuación, demostrar el concepto utilizando la segunda forma; podemos almacenar el número total de archivos en el directorio de trabajo actual en una variable llamada FILES y repetirla más tarde de la siguiente manera:

$ FILES=`sudo find . -type f -print | wc -l`
$ echo "There are $FILES in the current working directory."

Eso es todo por ahora, en este artículo, explicamos los métodos para asignar la salida de un comando de shell a una variable. Puede agregar sus pensamientos a esta publicación a través de la sección de comentarios a continuación.