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 の 2 つのキー (@mail_body@mail_title) を 2 つのテキスト変数 (BODY_HTML_TITLE="Report Statistics -$(date +'%Y-%m-%d')"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 に答える