Aquí los documentos con el <<-HERE
terminador funcionan bien para cadenas de texto de varias líneas sangradas. Eliminará todas las pestañas iniciales del documento aquí. (Sin embargo, los terminadores de línea permanecerán).
cat <<-____HERE
continuation
lines
____HERE
Ver también http://ss64.com/bash/syntax-here.html
Si necesita preservar algunos, pero no todos, espacios en blanco, puede usar algo como
sed 's/^ //' <<____HERE
This has four leading spaces.
Two of them will be removed by sed.
____HERE
o tal vez lo use tr
para deshacerse de las nuevas líneas:
tr -d '\012' <<-____
continuation
lines
____
(La segunda línea tiene una pestaña y un espacio al frente; el operador del tablero eliminará la pestaña antes del terminador heredoc, mientras que el espacio se conservará).
Para envolver cadenas largas y complejas en muchas líneas, me gusta printf
:
printf '%s' \
"This will all be printed on a " \
"single line (because the format string " \
"doesn't specify any newline)"
También funciona bien en contextos donde desea incrustar piezas de script de shell no triviales en otro idioma donde la sintaxis del idioma del host no le permitirá usar un documento aquí, como en un Makefile
o Dockerfile
.
printf '%s\n' >./myscript \
'#!/bin/sh` \
"echo \"G'day, World\"" \
'date +%F\ %T' && \
chmod a+x ./myscript && \
./myscript