ฉันไม่รู้ว่าทำไมคุณถึงทำแบบนั้น แต่คุณมีสองแม่แบบที่นี่ หนึ่งคือ 'ฐานข้อมูล' ของคุณและหนึ่งคือแม่แบบที่แท้จริงของคุณ ทั้งสองมีความง่ายต่อการจัดการกับshtpl (โครงการส่วนตัวของฉันไม่ได้ใช้อย่างกว้างขวาง แต่ได้รับการพัฒนาเพื่อแก้ไขปัญหาเหล่านั้นจริง ๆ )
ด้วย shtpl คุณจะทำสิ่งนี้:
เนื้อหาของไฟล์ 'การกำหนดค่า':
template_main=main.txt
template_other=other.txt
text1=whatever
text2=blah
เนื้อหาของไฟล์ 'ฐานข้อมูล' (ฉันสันนิษฐานว่าตัวคั่นคือแท็บ (\ t)):
#% . "$CONFFile"
#% if [ -z "$template_main" ] || [ -z "$template_other" ] || \
#% [ -z "$text1" ] || [ -z "$text2" ]; then
#% printf "database could not be generated!\n" > /dev/stderr
#% exit 1
#% fi
#%# outputfile template data1 data2 data3
first.txt $template_main $text1 abcd 1234
second.txt $template_main $text2 efgh 5678
third.txt $template_other $text1 ij 90
เนื้อหาของ generatetemplates.sh:
#!/bin/bash
if [ ! -s "$CONFFile" ]; then
if [ ! -s "$1" ]; then
printf "CONFfile is not set or empty!\n"
exit 1
else
export CONFFile="$1"
fi
fi
DB="$( bash -c "$( shtpl database )" )"
if [ -z "$DB" ]; then
printf "Database is empty! Abort.\n"
exit 2
fi
IFS=$'\t'
printf "%s" "$DB" | while read "Out" "In" "data1" "data2" "data3"; do
data1="$data1" data2="$data2" data3="$data3" \
bash -c "$( shtpl "$In" )" > "$Out"
done
เนื้อหาของ main.txt (other.txt ค่อนข้างเหมือนกัน):
main.txt template
$data1
$data2
$data3
ดังนั้นการดำเนินการ generatetemplates.sh
$ bash generatetemplates.sh "./configuration"
สร้างเราเป็นครั้งแรก. txt, second.txt และ third.txt
$ cat first.txt | $ cat second.txt | $ cat third.txt
main.txt template | main.txt template | other.txt template
whatever | blah | whatever
abcd | efgh | ij
1234 | 5678 | 90
คำอธิบายเล็กน้อย: ใน generatetemplates.sh เป็น 'ฐานข้อมูล' ที่จำเป็นซึ่งสร้างจากไฟล์กำหนดค่าของคุณ และอย่างที่สองสำหรับทุก tupel ในฐานข้อมูลสุดท้ายไฟล์ Out ที่สอดคล้องกันจาก In-template ของคุณ
หมายเหตุ: ปัญหาในการอ่านข้อมูลเปล่า [123] ดังนั้นจึงเป็นไปไม่ได้ด้วยวิธีการนี้
ดังนั้นหวังว่ามันจะง่ายพอสำหรับความต้องการของคุณ
มีความสุข!