Qui i documenti con il <<-HERE
terminatore funzionano bene per stringhe di testo a più righe rientrate. Rimuoverà tutte le schede principali dal documento qui. (I terminatori di riga rimarranno comunque, comunque.)
cat <<-____HERE
continuation
lines
____HERE
Vedi anche http://ss64.com/bash/syntax-here.html
Se hai bisogno di preservare alcuni, ma non tutti, spazi bianchi di testa, potresti usare qualcosa di simile
sed 's/^ //' <<____HERE
This has four leading spaces.
Two of them will be removed by sed.
____HERE
o forse usare tr
per sbarazzarsi di newline:
tr -d '\012' <<-____
continuation
lines
____
(La seconda riga ha una scheda e uno spazio in primo piano; la scheda verrà rimossa dall'operatore trattino prima del terminatore ereditario, mentre lo spazio verrà conservato.)
Per avvolgere stringhe lunghe e complesse su molte linee, mi piace printf
:
printf '%s' \
"This will all be printed on a " \
"single line (because the format string " \
"doesn't specify any newline)"
Funziona bene anche in contesti in cui si desidera incorporare parti non banali di script di shell in un'altra lingua in cui la sintassi della lingua host non consente di utilizzare un documento qui, come in un Makefile
o Dockerfile
.
printf '%s\n' >./myscript \
'#!/bin/sh` \
"echo \"G'day, World\"" \
'date +%F\ %T' && \
chmod a+x ./myscript && \
./myscript