Простой способ сделать это с помощью здесь документов.Вот как это выглядит при вводе в интерактивном режиме:
$ cat <<EOF
> Some literal content
> You can do parameter expansion:
> $PWD
> as well as command expansion:
> `date`
>
> EOF
Some literal content
You can do parameter expansion:
/tmp
as well as command expansion:
Fri Jul 29 13:36:10 CDT 2011
$
Или сценарий оболочки, который делает это
#! /bin/sh
cat <<EOF >output.txt
Some literal content
You can do parameter expansion:
$PWD
as well as command expansion:
`date`
EOF
Редактировать: На самом деле не существует хорошего способа использовать внешний файл шаблона сне более чем основные возможности оболочки, но это довольно легко сделать на других языках.Вот Python One Liner, который сделает это.
Нам нужно использовать специальный ключ шаблона для однострочника, поэтому CODEWOULDCOMEHERE
заменяется на {0}
.
$ cat report_template.html
<html>
<head>
<title> My page </title>
</head>
<body>
{0}
</BODY>
</HTML>
$ echo "Heres the part that gets inserted" | python -c 'import sys; sys.stdout.write(file(sys.argv[1]).read().format(sys.stdin.read()))' report_template.html
<html>
<head>
<title> My page </title>
</head>
<body>
Heres the part that gets inserted
</BODY>
</HTML>
Все вместе ваш сценарий будет выглядеть примерно так
subst_template () {
python -c 'import sys; sys.stdout.write(file(sys.argv[1]).read().format(sys.stdin.read()))' $1
}
genReportStatCellHtml | subst_template report_template.html > report.html