bash配置模板

时间:2012-11-15 14:32:00

标签: bash templates scripting templating

我正在使用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来评估和保存文件。

2 个答案:

答案 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

项目:http://www.template-toolkit.org/