我正在编写一个脚本,为自己的Web服务器自动为Apache和PHP创建配置文件。我不想使用任何CPanel或ISPConfig之类的GUI。
我有一些Apache和PHP配置文件的模板。Bash脚本需要读取模板,进行变量替换并将已解析的模板输出到某个文件夹中。最好的方法是什么?我可以想到几种方式。哪一个最好,或者可能有更好的方法呢?我想在纯Bash中做到这一点(例如,在PHP中很简单)
1)如何在文本文件中替换$ {}占位符?
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"
顺便说一句,我如何在这里将输出重定向到外部文件?如果变量包含引号,我是否需要转义?
2)使用cat&sed用其值替换每个变量:
给定template.txt:
The number is ${i}
The word is ${word}
命令:
cat template.txt | sed -e "s/\${i}/1/" | sed -e "s/\${word}/dog/"
这对我来说似乎很糟糕,因为需要转义许多不同的符号,并且带有许多变量,所以该行太长了。
您能想到其他一些优雅安全的解决方案吗?
千万里不及你
慕沐林林