我正在编写一个脚本来自动为我自己的 web 服务器创建 Apache 和 PHP 的配置文件。我不想使用任何图形用户界面,如 CPanel 或 ISPConfig。
我有一些 Apache 和 PHP 配置文件的模板。Bash 脚本需要读取模板、进行变量替换并将解析后的模板输出到某个文件夹中。最好的方法是什么?我能想到几种方法。哪一个是最好的,或者可能有更好的方法来做到这一点?我想在纯 Bash 中做到这一点(例如,在 PHP 中很容易)
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"
顺便说一下,我如何重定向输出到外部文件在这里?如果变量包含,比如说,引号,我需要转义什么吗?
给定 template.txt (见上文)
命令:
cat template.txt | sed -e "s/\${i}/1/" | sed -e "s/\${word}/dog/"
对我来说似乎很糟糕,因为需要转义很多不同的符号,而且有很多变量,这条线会太长。
你能想到其他一些优雅和安全的解决方案吗?