1

アプリケーションのインストールと構成に 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、ファイルを評価して保存するために使用します。

4

2 に答える 2

1

ヒアドキュメントにすべてを含める必要はありません

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
于 2012-11-15T18:14:26.277 に答える
0

tpageこの簡単な例のようにコマンドを使用できます。

$ cat /tmp/l.tpl 
DEFAULTS: [%def%]
    adapter[%db%]

$ tpage --define def=foo --define db=bar --interpolate /tmp/l.tpl
DEFAULTS: foo
    adapterbar

tpagePerlはよく知られているモジュールに付属しているコマンドですTemplate::Toolkitが、それを使用することを知る必要はありませんPerl。条件付きでも実行できます。条件付きを参照してください

プロジェクト:http ://www.template-toolkit.org/

于 2012-11-15T14:39:01.590 に答える