Cómo crear bloques multilínea en bash con Heredoc

Cómo crear bloques multilínea en bash con Heredoc.

Heredoc (Here-document), es una curiosa (y poco conocida) forma de imprimir cadenas de caracteres multilínea, en un formato similar al original.

Si tomamos como ejemplo el intérprete de comandos bash, ya vimos en el anterior articulo que no se permite escribir comentarios multilínea. Con Heredoc si podemos, y eso precisamente es lo que vamos a ver en este articulo de hoy ademas de otros ejemplos de uso.

 

Crear bloques multilínea en bash con Heredoc

Lo primero que haremos es conocer la sintaxis de Heredoc, a continuación trataremos unos ejemplos de uso y para concluir conocemos Heredoc con ssh.

Sintaxis de Heredoc

La sintaxis básica de Heredoc es como te indico a continuación.

La primera línea comienza con un comando opcional (no obligatorio), seguido por el operador de redirección especial <<, y el identificador delimitador.

  • Como identificador delimitador puedes usar cualquier cadena, aunque las más comunes son EOF y END.
  •  Si no incluyes entre comillas el identificador delimitador, el shell sustituye las variables, comandos y caracteres especiales antes de pasar las líneas de caracteres al comando.
  • Si quieres usar una sangría al imprimir las líneas de caracteres, ignorando las tabulaciones originales. Debemos añadir el símbolo menos al operador de redirección, ejemplo: <<- .

En los bloques multilínea se pueden incluir, cadenas, variables, comandos o cualquier otro tipo de entrada.

La última línea siempre debe terminar con el identificador delimitador (no se permiten espacios en blanco).

 

Ejemplos de Heredoc

En el primer ejemplo nos ayudamos del comando cat, además imprimimos dos líneas que se completan con variables de entorno.

ejemplo de salida…

sergio@sololinux ~ $ cat << EOF
> El directorio actual es: $PWD
> Has iniciado sesion como: $(whoami)
> EOF
El directorio actual es: /home/sergio
Has iniciado sesion como: sergio

Si el ejemplo anterior lo quieres utilizar en una instrucción o bucle, tal vez quieras ejecutar el sangrado de la salida. En este caso el operador de redirección es: <<- . Vemos un ejemplo.

Con el operador [ > ] puedes enviar la salida a un archivo que se creará automáticamente (si existe se sustituye). Con el operador [ >> ] se agregara la salida al contenido del archivo.

Ahora incluimos el comando sed para sustituir caracteres.

ejemplo de salida…

sergio@sololinux ~ $ cat <<‘EOF’ | sed ‘s/l/e/g’
> Soy lector de
> SoloLinux
> EOF
Soy eector de
SoeoLinux

Como último ejemplo vemos cómo incluir comentarios explicativos en nuestros scripts bash.

ejemplo de salida…

 

Ejecutar Heredoc con SSH

Una de las maneras más fáciles de ejecutar múltiples comandos en un sistema remoto, es a través de Heredoc. Mira que simple.

ejemplo de salida…

El directorio actual es: /home/sergio
El directorio remoto es: /home/sololinux

Como has podido comprobar, Heredoc es una gran herramienta desconocida por los usuarios más noveles, pero que a partir de ahora la tendrán en cuenta en sus nuevos proyectos.

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

 

Una respuesta

  1. Henry
    04/03/2020

Agregar comentario