将 shell 变量传递给 cat 读取的文件

Passing shell variable into file read by cat

老观众第一次发贴。

我根本不懂 unix 或 shell,我只是想根据我为支持我建立的 Wordpress 网站而编写的 SQL 查询创建一些通知。

我想根据我的查询发送一封 html 电子邮件。 查询 returns 类似于;

+------------+---------------+----------+----------+
|display_name| user_email    | value    | type     |
+------------+---------------+----------+----------+ 
| nick       | nick@test.com | somedata | batch1   |
| bob        | bob@test.com  | somedata | batch2   |
+------------+---------------+----------+----------+

这是我的代码

mysql -uUSER -pPASS DB -N < /path/to/file/batch.sql | while read user_email display_name value type ; do

emailtemplate="/path/to/file/email.html"  
(  
echo "From: email@address.com"  
echo "To: $user_email"  
echo "MIME-Version: 1.0"  
echo "Subject: Test"   
echo "Content-Type: text/html"   
cat $emailtemplate  
) | /usr/sbin/sendmail -t

sleep 5

done

我需要根据 $type 变量更改 $emailtemplate,除此之外这一切都有效,除了我无法将 $display_name 和 $value 变量传递给 html文件,它只是在电子邮件中显示为 $display_name 和 $value。

请帮忙!我知道这真的是一件小事。

想通了。似乎无法识别变量,因此具有唯一值的 find/replace 有效。

而不是

cat $emailtemplate

这是通过在模板中包含 %%display_name%% 和 %%value%% 来实现的,这样它们就可以被变量替换

sed -e "s/%%display_name%%/$display_name/" -e "s/%%value%%/$value/" $emailtemplate