Cómo utilizar las expansiones $() y ${} en un script de Shell

Los scripts de shell son una forma poderosa de automatizar tareas repetitivas en un sistema operativo basado en Unix. A medida que los scripts se vuelven más complejos, es importante conocer las diferentes formas en que se pueden expandir y manipular las variables. En este artículo, aprenderemos cómo utilizar dos tipos de expansiones: $() y ${}.
¿Qué son las expansiones $() y ${}?
En los scripts de shell, las variables se pueden definir y asignar valores utilizando el signo de igual (=). Una vez definida la variable, se puede acceder a su valor utilizando el signo de dólar ($). Las expansiones $() y ${} permiten ejecutar comandos dentro de los paréntesis y utilizar su salida como valor de una variable.
La expansión $() se utiliza para sustituir el resultado de un comando. Por ejemplo:
echo "El número de archivos en el directorio actual es $(ls | wc -l)"
En este caso, las expresiones $() y $(ls | wc -l) se expanden para mostrar el número de archivos en el directorio actual.
La expansión ${} se utiliza para manipular el valor de una variable. Por ejemplo:
nombre="Juan"
echo "Hola, ${nombre^^}!"
En este caso, la expresión ${nombre^^} se expande para mostrar el valor de la variable "nombre" en mayúsculas. Además, también puede usarse la expresión ${nombre,,} para mostrar el valor en minúsculas, ${nombre^^[primeera]} para capitalizar la primera letra y ${nombre^^[actodos]} para capitalizar todas las letras.
Usos comunes de las expansiones $() y ${}
Las expansiones $() y ${} se utilizan comúnmente en los scripts de shell para:
1. Almacenar la salida de un comando en una variable
fecha=$(date +%Y-%m-%d)
echo "Hoy es ${fecha}"
En este caso, la expresión $(date +%Y-%m-%d) se expande para mostrar la fecha actual en el formato aaaa-mm-dd y se almacena en la variable "fecha".
2. Manipular el valor de una variable
archivo="informe.txt"
mv ${archivo} ${archivo%.*}_backup.txt
En este caso, la expresión ${archivo%.*}_backup.txt se expande para cambiar el nombre del archivo "informe.txt" a "informe_backup.txt". La expresión ${archivo%.*} se utiliza para eliminar la extensión del archivo.
3. Combinar variables y texto
nombre="Juan"
apellido="Pérez"
echo "El nombre completo es ${nombre} ${apellido}"
En este caso, la expresión ${nombre} ${apellido} se expande para mostrar el nombre completo.
Ejemplos de código
A continuación, se presentan algunos ejemplos de código para ilustrar el uso de las expansiones $() y ${} en un script de shell:
#!/bin/bash
fecha=$(date +%Y-%m-%d)
echo "Hoy es ${fecha}"
archivo="informe.txt"
mv ${archivo} ${archivo%.*}_backup.txt
nombre="Juan"
apellido="Pérez"
echo "El nombre completo es ${nombre} ${apellido}"
Conclusión
Las expansiones $() y ${} son poderosas herramientas que permiten expandir y manipular las variables en un script de shell. Al conocer los diferentes usos de estas expansiones, podemos escribir scripts más eficientes y flexibles.
Preguntas frecuentes
¿Puedo utilizar las expansiones $() y ${} en cualquier shell?
Sí, las expansiones $() y ${} funcionan en cualquier shell de Unix.
¿Puedo utilizar las expansiones $() y ${} en scripts de otros lenguajes de programación?
No, las expansiones $() y ${} son características específicas de los scripts de shell.
¿Puedo combinar varias expansiones en una sola expresión?
Sí, puedes combinar varias expansiones en una sola expresión. Por ejemplo:
nombre="juan"
echo "El nombre completo en mayúsculas es ${nombre^^} y tiene ${#nombre} caracteres."
En este caso, se utilizan las expansiones ${nombre^^} y ${#nombre} para mostrar el nombre en mayúsculas y el número de caracteres, respectivamente.
[nekopost slugs="imprimir-columnas-awk-1,ejemplos-de-comandos-de-corte-de-bash,generar-una-fiesta-de-cadena-aleatoria,ordena-la-columna-bash-linux,no-es-igual-a-la-fiesta,bash-duerme-un-segundo,ls-colors-bash,pasar-a-traves-de-archivos-bash,crear-argumentos-de-funciones-bash"]

Deja una respuesta