Cómo usar expansiones $ y $ {} en un script de shell

Cómo usar expansiones $ y $ {} en un script de shell
Si está utilizando un sistema Linux, es posible que ya sepa cuán crucial es una interfaz de shell para interactuar con su sistema. En la mayoría de las distribuciones de Linux, Bash es el shell predeterminado que usamos para ejecutar comandos y ejecutar scripts. Un script de shell es un conjunto de comandos que, cuando se ejecutan, se usa para realizar algunas funciones útiles en Linux. Este .El archivo sh, escrito por un usuario, contiene todos los comandos utilizados para realizar una tarea para que no tengamos que ejecutar esos comandos manualmente, uno por uno.

En este tutorial, explicaremos dos de las expansiones bash más útiles utilizadas en scripts de shell:

  • $ () - La sustitución del comando
  • $ - La sustitución de parámetros/expansión variable

Se realiza una expansión en el shell en el guión después de que se haya dividido en tokens. Un token es una secuencia de caracteres considerados una sola unidad por el shell. Puede ser una palabra o un operador.

Hemos ejecutado todos los ejemplos y scripts mencionados en este artículo en un sistema de Buster Debian 10. Sin embargo, puede replicarlos fácilmente en la mayoría de las conchas de Linux. Estamos utilizando la línea de comando Debian predeterminada, el terminal, para este tutorial. En Debian, puede acceder a él a través de la barra de búsqueda del lanzador de aplicaciones de la siguiente manera:

Para acceder al lanzador de aplicaciones, simplemente presione la tecla Super/Windows en su teclado.

$ () Sustitución de comando

Según el Manual oficial de referencia de GNU Bash:

"La sustitución del comando permite que la salida de un comando reemplace el comando en sí. Bash realiza la expansión ejecutando el comando y reemplazando la sustitución del comando con la salida estándar del comando, con cualquier línea nueva eliminada eliminada. No se eliminan las nuevas líneas incrustadas, pero pueden eliminarse durante la división de palabras." La sustitución del comando ocurre cuando un comando se adjunta de la siguiente manera:

$ (comando)
o
'dominio'

Por ejemplo, los siguientes comandos de eco sustituyen la salida del comando de fecha como su entrada:

$ echo $ (fecha)
$ echo 'fecha'

También puede usar la sustitución del comando para asignar valor a una variable. Por ejemplo, imprimiremos la fecha de hoy a través de la variable hoy de la siguiente manera:

$ Hoy = $ (fecha)
$ Echo "$ hoy"

Otra utilidad de la sustitución del comando está en bucles de shell para obtener entrada. Aquí, intentaremos imprimir todo el .archivos txt en nuestra carpeta de inicio utilizando la sustitución del comando:

para f in/home/sana/*.TXT
hacer
echo "$ f"
hecho

Uso de la sustitución de comandos en un script de shell

Los ejemplos anteriores son algunas formas en que puede utilizar el poder de sustitución de comandos en su script de shell. Aquí hay un informe de estado de muestra que podemos imprimir usando el siguiente script de shell:

#!/bin/sh
echo *** Informe de estado ***
Hoy = $ (fecha)
Echo "Hoy es $ hoy"
Usuarios = $ (quién | wc -l)
echo "$ Los usuarios de los usuarios están actualmente registrados"
Tiempo de actividad = $ (fecha; tiempo de actividad)
Echo "El tiempo de actividad es $ tiempo de actividad"

La sustitución del comando se ha utilizado tres veces en este script; Al imprimir la fecha, iniciar sesión en los usuarios y tiempo de actividad. Guardamos el guión de la siguiente manera:

Lo hizo ejecutable y luego lo ejecutó a través del siguiente comando:

$ chmod +x estado.mierda
ps ./Statys.mierda

Aquí está la salida de nuestro estado.SHIR SCRIPT:

Puede, por supuesto, crear scripts más significativos siguiendo los ejemplos que acabamos de mencionar.

$ Sustitución/expansión de parámetros

Un parámetro, en Bash, es una entidad que se utiliza para almacenar valores. Un par de parámetros puede ser referenciado por un número, un nombre o por un símbolo especial. Cuando un número hace referencia a un parámetro, se llama parámetro posicional. Cuando un parámetro se hace referencia por un nombre, se llama variable. Cuando un símbolo especial hace referencia a un parámetro, significa que son parámetros de autoset con usos especiales.

Expansión/sustitución de parámetros es el proceso de obtener el valor de la entidad/parámetro referenciado. Es como si estuviera expandiendo una variable para obtener su valor.

La sintaxis de expansión de parámetros más simple posible es la siguiente:

Así es como puede usar la expansión de los parámetros en Bash:

$ parámetro

Por ejemplo, el uso más simple es sustituir el parámetro por su valor:

$ name = "John Doe"
$ Echo "$ nombre"

Este comando sustituirá el valor del "nombre" variable que será utilizado por el comando echo:

Es posible que esté pensando que se puede lograr lo mismo evitando las aparatos ortopédicos de la siguiente manera:

La respuesta es que durante la expansión de los parámetros, estos aparatos ortopédicos rizados ayudan a delimitar el nombre de la variable. Expliquemos lo que queremos decir con limitar aquí. Déjame ejecutar el siguiente comando en mi sistema:

$ echo "El nombre de la persona es $ name_"

El resultado no imprimió el valor del nombre de la variable ya que el sistema pensó que me refería a la variable "name_". Por lo tanto, mi nombre de variable no fue "delimitado". Las aparatos ortopédicos en el siguiente ejemplo delimitarán el nombre de la variable y devolverán los resultados de la siguiente manera:

$ echo "El nombre de la persona es $ nombre _"

Estas son todas las formas en que las variables se sustituyen en el caparazón:

$ variable Este comando sustituye el valor de la variable.
$ variable: -word Si una variable es nula o si no se establece, Word se sustituye por variable. El valor de la variable no cambia.
$ variable: = word Si una variable es nula o si no está establecida, el valor de la variable se establece en Word.
$ variable:?mensaje Si una variable es nula o si no está configurada, el mensaje se imprime al error de bash estándar.
$ variable:+word Si variable Está establecido, palabra se sustituye por variable. Sin embargo, el valor de la variable en sí no cambia.

Los ejemplos anteriores son algunas formas en que puede utilizar el poder de la sustitución variable en Bash. Puede incorporar estas formas de usar la expansión en sus scripts de shell para lograr su tarea de manera óptima.