我有一个模板文件(template.txt):
Hello, $x
Hello, $y我有一个脚本文件(script.sh):
#!/bin/bash
$x=linux
$y=unix
# I want to include template.txt as a here-doc如何将template.txt包含为here-doc of script.sh。
因此,当我运行script.sh时,输出应该是:
Hello, linux
Hello, unix编辑:
我认为replace对我的工作来说是个很好的命令:
$ cat template.txt | replace '$x' linux '$y' unix一种更复杂的工具:
$ cheetah compile template.tmpl
$ x=linux y=unix python template.py --env发布于 2012-04-01 01:49:06
我在我的一个项目中使用这个函数。它从模板构建一个实际的文档,然后使用.在当前的shell中执行它。
# usage: apply_template /path/to/template.txt
apply_template () {
(
trap 'rm -f $tempfile' EXIT
tempfile=$(mktemp $(pwd)/templateXXXXXX)
echo 'cat <<END_TEMPLATE' > $tempfile
cat $1 >> $tempfile
echo END_TEMPLATE >> $tempfile
. $tempfile
)
}发布于 2013-02-14 08:20:42
下面的bash函数计算任意文件作为这里的文档,允许bash作为一种迷你模板语言使用。它不需要任何临时文件。
#!/bin/bash
template() {
file=$1
shift
eval "`printf 'local %s\n' $@`
cat <<EOF
`cat $file`
EOF"
}变量将从环境中展开或可以直接传递,例如,对于模板文件
Hello $x, $y, $z和片段
y=42
for i in 1 2; do
template template.txt x=$i z=end
done输出将是
Hello 1, 42, end
Hello 2, 42, end注意,模板文件中的任意代码也将被执行,所以请确保您信任编写它的人。
发布于 2012-04-01 01:53:33
#!/bin/bash
x=linux
y=unix
cat << EOF
Hello, $x
Hello, $y
EOFhttps://stackoverflow.com/questions/9961262
复制相似问题