Единственный способ «сохранить» это изменить ваш входной файл. Причина, по которой <p>
имеет отступ, заключается в том, что вы сделали отступ здесь:
$(write_multiple_lines)
Поскольку вы не хотите изменять свой ввод, например,
write_multiple_lines() {
cat <<_EOF_
<h1>Header</h1>
<p>Paragraph</p>
_EOF_
return
}
Вы можете изменить его вывести пробелы для вас и затем напечатать каждую строку, например
#!/bin/bash
write_multiple_lines() {
while read p; do
echo " " "$p"
done <<_EOF_
<h1>Header</h1>
<p>Paragraph</p>
_EOF_
return
}
cat << _EOF_
<html>
$(write_multiple_lines)
</html>
_EOF_
output:
<html>
<h1>Header</h1>
<p>Paragraph</p>
</html>
Хотя это менее динамично c / очевидно, тогда, если вы отформатировали его дословно, так что я придерживаюсь моего первоначального предложения, прежде чем делать что-то подобное.