ฉันกำลังเขียนสคริปต์เพื่อสร้างไฟล์กำหนดค่าอัตโนมัติสำหรับ Apache และ PHP สำหรับเว็บเซิร์ฟเวอร์ของฉันเอง ฉันไม่ต้องการใช้ GUI ใด ๆ เช่น CPanel หรือ ISPConfig
ฉันมีเทมเพลตของไฟล์กำหนดค่า 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"
BTW ฉันจะเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ภายนอกได้อย่างไร? ฉันจำเป็นต้องหลีกเลี่ยงบางสิ่งหรือไม่หากตัวแปรมีคำพูด?
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/"
ดูเหมือนจะไม่ดีสำหรับฉันเพราะต้องหลีกเลี่ยงสัญลักษณ์ต่างๆมากมายและด้วยตัวแปรมากมายบรรทัดจะยาวเกินไป
คุณนึกถึงโซลูชันที่หรูหราและปลอดภัยอื่น ๆ ได้หรือไม่?