Esta guía rápida le mostrará métodos para definir variables de cadena multilínea utilizando personajes de escape y Heredoc.
Personajes de escape de bash
Bash, como la mayoría de los lenguajes de programación, proporciona la capacidad de usar personajes de escape. Los personajes de escape nos permiten invocar una nueva interpretación de las secuencias de personajes. Aunque Bash tiene varios personajes de escape, solo necesitamos preocuparnos por \ n (nuevo carácter de línea).
Por ejemplo, si tenemos una cadena multilínea en un script, podemos usar el carácter \ n para crear una nueva línea cuando sea necesario.
Un ejemplo de este caso de uso es:
#!/bin/bash
str = "Esta es una cadena \ n-y otra \ n-y otra \ n-y la final"
echo -e $ str
La ejecución del script anterior imprime las cadenas en una nueva línea donde existe el carácter \ n.
HEREDOC
El método anterior funciona bien para texto de línea simple. Sin embargo, si necesitamos imprimir un texto con otros caracteres especiales, reacciones de violación y citas, se vuelve innecesariamente complejo. Para resolver tal problema, podemos usar HEREDOC.
¿Qué es un Heredoc??
Un HEREDOC es un bloque de código de propósito especial que le dice al shell que lea la entrada de la fuente actual hasta que encuentre una línea que contenga un delimitador.
La sintaxis para Heredoc en Bash es:
DOMINIO << DELIMITER
…
Bloque de Heredoc
…
…
Delimitador
Los delimitadores en un Heredoc pueden ser cualquier cuerda. Sin embargo, las cadenas más comunes son EOF, EOM o FIN.
Una vez que el shell se encuentra con el delimitador, reemplaza todas las variables, comandos y caracteres especiales y luego pasa la información dentro del bloque HEREDOC al comando principal.
Puede incluir caracteres especiales, cuerdas regulares, variables y otros comandos de shell en el bloque Heredoc.
Asegúrese de terminar el bloque HEREDOC con el delimitador. No agregue ningún espacio en blanco antes del delimitador.
Cadena multilínea usando Heredoc
Supongamos que tiene la siguiente cadena:
Dentro de un script bash, podemos crear una variable y pasar la cadena de arriba a CAT como se muestra a continuación:
#!/bin/bash
cadena = $ (gato << EOF
Documento
EOF
)
Echo $ String
Una vez que ejecute el script anterior, verá una salida a:
Como puede ver, podemos imprimir toda la cadena, incluidos todos los caracteres especiales.
Conclusión
Para esta guía, discutimos cómo definir y usar una cadena multilínea en un script bash. Sin embargo, hay más en HEREDOC de lo que se discutió aquí. Considere el siguiente recurso para obtener más información.