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.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *