Bash

Concatenar cadenas en bash, incluso si tienen guión bajo

En este post voy a explicar una cosa muy simple: cómo concatenar cadenas en bash, el lenguaje (o como se le diga) en el que se escriben los scripts de Linux.

Concatenar cadenas es crear una nueva cadena a partir de la unión de otras. Por ejemplo, si concatenamos “Hola” y ” mundo” obtenemos una cadena que dice “Hola mundo”.

Justamente eso haremos con bash y algunas variables para concatenar cadenas.

Por cierto, también mostraré cómo concatenar cadenas y ponerles un guión bajo, pues ese fue un problema al que me enfrenté cuando programé el script para respaldar una base de datos periódicamente.

Concatenar cadenas con Bash

Para concatenar simplemente creamos una nueva cadena y dentro de las comillas ponemos el nombre de las otras cadenas. Veamos este ejemplo:

nombre="Luis"
nombre_mascota="Maggie"
unidos="$nombre$nombre_mascota"
echo $unidos

Dentro de comillas dobles ponemos la variable con un signo de dólar al inicio, para evaluarlas como variables.

Concatenar y agregar texto

Igualmente podemos formatear una cadena y agregar el contenido de variables dentro del mismo. Veamos otro ejemplo:

nombre="Luis"
nombre_mascota="Maggie"
# Para concatenar simplemente las ponemos en la misma cadena
saludo="Hola, me llamo $nombre y mi mascota se llama $nombre_mascota"
echo $saludo

Dentro de la cadena ponemos el nombre de las variables y bash se encargará de evaluarlas.

Concatenar en bash con guión bajo

Habrá ocasiones en las que se desee concatenar una variable con otra, usando un guión bajo. Algo así:

nombre="Luis"
nombre_mascota="Maggie"
# Cuidado al concatenar, pues a veces hay problemas con los guiones bajos. Así:
mensaje="El correo de $nombre_mascota es $nombre_mascota_123@gmail.com"
# Salida esperada es Maggie_123 pero bash interpreta que hay una variable llamada $nombre_mascota_123
echo $mensaje
# Salida es: El correo de Maggie es @gmail.com

Si observamos bien, queremos concatenar la variable con la cadena "_123" pero el problema es que bash toma la variable como si se llamara nombre_mascota_123 ya que el guión bajo sigue siendo un carácter válido para el nombre.

Solución

La solución es usar otra manera de evaluar la cadena, usando ahora ${} (me recuerda a las backticks de JavaScript). Entonces el código debería quedar así:

nombre="Luis"
nombre_mascota="Maggie"
# Si queremos concatenar con guiones bajos, entonces:
mensaje="El correo de $nombre_mascota es ${nombre_mascota}_123@gmail.com"
echo $mensaje

De esta manera ponemos un delimitador de la expresión, así no hay problema si después hay un guión bajo o cualquier otro símbolo que sea válido al nombrar variables.

Probar todo lo que acabamos de hacer

Si quieres ejecutar el código crea un script de Linux y ejecútalo, asegúrate de darle permisos de ejecución.

Eso es todo por hoy. Te invito a leer más sobre Linux.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Cancelar trabajo de impresión con C++

En este post te quiero compartir un código de C++ para listar y cancelar trabajos…

4 semanas hace

Copiar bytes de Golang a JavaScript con WebAssembly

Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…

2 meses hace

Imprimir PDF con Ghostscript en Windows de manera programada

Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…

2 meses hace

Hacer pruebas en impresora térmica Bluetooth Android

Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…

2 meses hace

Limpiar clave PEM

Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…

2 meses hace

Foco con Telegram, apagador de 3 vías, relevador y ESP8266

Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…

2 meses hace

Esta web usa cookies.