Cuando ejecuta un comando, produce algún tipo de salida:se supone que el resultado de un programa debe producir 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 usarla 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 usar la función de sustitución de comandos de shell en los siguientes formularios:
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 de who
(que muestra quién está conectado al sistema) comando en la variable CURRENT_USERS
usuario:
$ CURRENT_USERS=$(who)
Entonces 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 \n
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)"
Luego, para demostrar el concepto usando la segunda forma; podemos almacenar el número total de archivos en el directorio de trabajo actual en una variable llamada FILES
y eco 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.