Bash Templating: How to build configuration files from templates with Bash?

Posted by FractalizeR on Stack Overflow See other posts from Stack Overflow or by FractalizeR
Published on 2010-05-26T15:12:16Z Indexed on 2010/05/26 19:01 UTC
Read the original article Hit count: 391

Filed under:
|
|
|

Hello.

I'm writting a script to automate creating configuration files for Apache and PHP for my own webserver. I don't want to use any GUIs like CPanel or ISPConfig.

I have some templates of Apache and PHP configuration files. Bash script needs to read templates, make variable substitution and output parsed templates into some folder. What is the best way to do that? I can think of several ways. Which one is the best or may be there are some better ways to do that? I want to do that in pure Bash (it's easy in PHP for example)

1)http://stackoverflow.com/questions/415677/how-to-repace-variables-in-a-nix-text-file

template.txt:

the number is ${i}
the word is ${word}

script.sh:

#!/bin/sh

#set variables
i=1
word="dog"
#read in template one line at the time, and replace variables
#(more natural (and efficient) way, thanks to Jonathan Leffler)
while read line
do
    eval echo "$line"
done < "./template.txt"

BTW, how do I redirect output to external file here? Do I need to escape something if variables contain, say, quotes?

2) Using cat & sed for replacing each variable with it's value:

Given template.txt:

The number is ${i}
The word is ${word}

Command:

cat template.txt | sed -e "s/\${i}/1/" | sed -e "s/\${word}/dog/"

Seems bad to me because of the need to escape many different symbols and with many variables the line will be tooooo long.

Can you think of some other elegant and safe solution?

© Stack Overflow or respective owner

Related posts about bash

Related posts about templates