Tôi đang viết một tập lệnh để tự động tạo các tệp cấu hình cho Apache và PHP cho máy chủ web của riêng tôi. Tôi không muốn sử dụng bất kỳ GUI nào như CPanel hoặc ISPConfig.
Tôi có một số mẫu tệp cấu hình Apache và PHP. Tập lệnh Bash cần đọc các mẫu, thực hiện thay thế biến và xuất các mẫu được phân tích cú pháp vào một số thư mục. Cách tốt nhất để làm điều đó là gì? Tôi có thể nghĩ ra nhiều cách. Cái nào là tốt nhất hoặc có thể có một số cách tốt hơn để làm điều đó? Tôi muốn làm điều đó trong Bash thuần túy (ví dụ dễ dàng trong PHP)
1) Làm cách nào để thay thế chỗ giữ $ {} trong tệp văn bản?
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, làm cách nào để chuyển hướng đầu ra sang tệp bên ngoài ở đây? Tôi có cần phải thoát một cái gì đó nếu các biến chứa, nói, trích dẫn?
2) Sử dụng cat & sed để thay thế từng biến bằng giá trị của nó:
Đã cho template.txt:
The number is ${i}
The word is ${word}
Chỉ huy:
cat template.txt | sed -e "s/\${i}/1/" | sed -e "s/\${word}/dog/"
Có vẻ xấu đối với tôi vì cần phải thoát khỏi nhiều biểu tượng khác nhau và với nhiều biến số, dòng này sẽ dài ra.
Bạn có thể nghĩ về một số giải pháp thanh lịch và an toàn khác?