将 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
老观众第一次发贴。
我根本不懂 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