Aqui, os documentos com o <<-HERE
terminador funcionam bem para cadeias de texto de múltiplas linhas recuadas. Ele removerá todas as guias principais do documento aqui. (Os terminadores de linha ainda permanecerão.)
cat <<-____HERE
continuation
lines
____HERE
Consulte também http://ss64.com/bash/syntax-here.html
Se você precisar preservar alguns, mas não todos, espaços em branco à esquerda, use algo como
sed 's/^ //' <<____HERE
This has four leading spaces.
Two of them will be removed by sed.
____HERE
ou talvez use tr
para se livrar das novas linhas:
tr -d '\012' <<-____
continuation
lines
____
(A segunda linha tem uma aba e um espaço na frente; a aba será removida pelo operador do traço antes do terminador heredoc, enquanto o espaço será preservado.)
Para agrupar seqüências longas e complexas em várias linhas, eu gosto de printf
:
printf '%s' \
"This will all be printed on a " \
"single line (because the format string " \
"doesn't specify any newline)"
Também funciona bem em contextos em que você deseja incorporar partes não triviais do shell script em outro idioma em que a sintaxe do idioma host não permita que você use um documento aqui, como em um Makefile
ou Dockerfile
.
printf '%s\n' >./myscript \
'#!/bin/sh` \
"echo \"G'day, World\"" \
'date +%F\ %T' && \
chmod a+x ./myscript && \
./myscript