Tôi không biết tại sao bạn làm điều đó, nhưng bạn có hai mẫu ở đây. Một là 'cơ sở dữ liệu' của bạn và một là mẫu thực sự của bạn. Cả hai đều dễ dàng để xử lý với shtpl . (dự án riêng của tôi, vì vậy không được sử dụng rộng rãi, nhưng được phát triển để giải quyết những vấn đề thực sự đó)
Với shtpl bạn sẽ làm một cái gì đó như thế này:
Nội dung của tệp 'cấu hình':
template_main=main.txt
template_other=other.txt
text1=whatever
text2=blah
Nội dung của tệp 'cơ sở dữ liệu' (Tôi giả sử rằng dấu phân cách là tab (\ 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
Nội dung của Generatetemsheet.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
Nội dung của main.txt (other.txt hoàn toàn giống nhau):
main.txt template
$data1
$data2
$data3
Vì vậy, thực hiện Generatetemsheet.sh
$ bash generatetemplates.sh "./configuration"
tạo cho chúng tôi First.txt, second.txt và 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
Giải thích nhỏ: Trong Generatetemsheet.sh trước tiên là 'cơ sở dữ liệu' cần thiết được tạo từ tệp cấu hình của bạn. Và thứ hai cho mỗi tupel trong cơ sở dữ liệu cuối cùng là tệp Out tương ứng từ mẫu trong của bạn.
Lưu ý: Dữ liệu trống [123] rắc rối đã đọc. Vì vậy, nó là không thể với phương pháp này.
Vì vậy, hy vọng điều này là đủ đơn giản cho nhu cầu của bạn.
Chúc vui vẻ!