我正在使用bash脚本来安装和配置应用程序。我正在尝试使用模板,我可以从变量中填入值,然后将其保存到正确的位置。这只适用于变量,但我无法使用任何条件。有没有更好的方法来做到这一点?
以下是我的示例模板:
#!/bin/bash
cat <<EOF
DEFAULTS: &DEFAULTS
adapter: $DB
host: $DB_HOST
username: $DB_USER
password: $DB_PASS
database: $DB_DATABASE
if [ ! $DB_RECONNECT = ""]; then
reconnect: $DB_RECONNECT
fi
if [ ! $DB_TIMEOUT = ""]; then
timeout: $DB_TIMEOUT
fi
EOF
然后我使用source template.sh > /path/to/file
来评估和保存文件。
答案 0 :(得分:1)
您不必将所有内容都包含在heredoc
中cat <<EOF
...
database: $DB_DATABASE
EOF
if [ -z "$DB_RECONNECT" ]; then
echo "reconnect: $DB_RECONNECT"
fi
if [ -z "$DB_TIMEOUT" ]; then
echo "timeout: $DB_TIMEOUT"
fi
答案 1 :(得分:0)
您可以使用命令tpage
,例如:
$ cat /tmp/l.tpl
DEFAULTS: [%def%]
adapter[%db%]
$ tpage --define def=foo --define db=bar --interpolate /tmp/l.tpl
DEFAULTS: foo
adapterbar
tpage
是众所周知的Perl
模块Template::Toolkit
附带的命令,但无需知道Perl
即可使用它。你也可以做一些条件,见conditional