0

我搜索了一种方法,用带有空格和特殊字符的句子替换文件 html 中已识别的键。我尝试使用sed但我会收到很多错误,因为该句子可能包含许多字符。

我的外壳脚本:

 ...
 cp $HTML_TEMPLATE $HTML_OUTPUT
 sed "s/\@mail_title/$HTML_TITLE/g" $HTML_OUTPUT > temp && mv -f temp $HTML_OUTPUT
 sed "s/\@mail_body/$HTML_CONTENT/g" $HTML_OUTPUT > temp && mv -f temp $HTML_OUTPUT
 ...

目标是用脚本将 mail.html 中的两个键 ( @mail_bodyand @mail_title) 替换为 2 个文本变量 ( BODY_HTML_TITLE="Report Statistics -$(date +'%Y-%m-%d')" and BODY_HTML_CONTENT="test")。

邮件.html:

....
<table id="container" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>
      <!-- Header -->
      <table id="header">
       <tr>
         <td>
           <table width="100%">
           <tr>
             <td width="50%" align="right" style="font-size:15px; line-height:18px; color:#b5397a; font-family:Helvetica, Arial, sans-serif;"> <h2>@mail_title</h2></td>

              </tr>
              ...                                                  
4

1 回答 1

0

我看到您的问题有以下 sed 语句:

sed "s/\@mail_title/$HTML_TITLE/g" $HTML_OUTPUT > temp && mv -f temp $HTML_OUTPUT
sed "s/\@mail_body/$HTML_CONTENT/g" $HTML_OUTPUT > temp && mv -f temp $HTML_OUTPUT

但是,您在下面提到的目标变量(BODY_HTML_TITLE 和 BODY_HTML_TITLE)与您在sed行(HTML_TITLE 和 HTML_CONTENT)中提到的不同:

BODY_HTML_TITLE="Report Statistics -$(date +'%Y-%m-%d')"
BODY_HTML_CONTENT="test"

是不是你剧本里的错字?当我使用正确的变量时,我的测试脚本工作得很好:

[gc@slave1 ~]$ cat file
HTML_TITLE="Report Statistics -$(date +'%Y-%m-%d')"
echo $HTML_TITLE

<tr>
     <td Arial, sans-serif;"> <h2>@mail_title</h2></td>
</tr>


[gc@slave1 ~]$ cat main
sed "s/@mail_title/$HTML_TITLE/g" file


[gc@slave1 ~]$ ./main
HTML_TITLE="Report Statistics -$(date +'%Y-%m-%d')"
echo $HTML_TITLE

<tr>
     <td Arial, sans-serif;"> <h2>Report Statistics -2014-08-05</h2></td>
</tr>
于 2014-08-05T13:11:13.650 回答