bash 用多行替换 mime 占位符
bash replace mime placeholder with multiple line
我有一个 MIME 格式的电子邮件模板,电子邮件正文的一部分是占位符 ${result}
。
<body>
<p>${result}</p>
</body>
在 bash 脚本中,我有一个变量 $RESULT
将以下 table 存储在一个字符串中。
----------------------------------------------------
Sydney Tokyo London New York
product1 100 120 0 70
product2 4 80 210 110
product3 150 50 80 20
----------------------------------------------------
我还有几个占位符需要替换(只是一个短字符串或一个词),所以我使用了以下 sed
命令,但是它 returns 出错了:
sed -e "s/${subject}//" \
-e "s/${client}/$NAME/" \
-e "s/${result}/$RESULT/" temp-email > client-email
错误:
sed: -e expression #3, char 64: unterminated `s' command
我知道这与 \n
有关,但我刚刚开始学习 bash 和 MIME,不知道如何用 $RESULT
[= 替换占位符20=]
提前致谢
您可以通过 \n
的使用参数扩展替换换行符
RESULT=${RESULT//$'\n'/'\n'}
或者使用 Perl 来处理替换中的换行符:
CLIENT=$NAME RESULT=$RESULT SUBJECT= perl -pe '
s/${(subject|client|result)}/$ENV{ uc }/g'
我有一个 MIME 格式的电子邮件模板,电子邮件正文的一部分是占位符 ${result}
。
<body>
<p>${result}</p>
</body>
在 bash 脚本中,我有一个变量 $RESULT
将以下 table 存储在一个字符串中。
----------------------------------------------------
Sydney Tokyo London New York
product1 100 120 0 70
product2 4 80 210 110
product3 150 50 80 20
----------------------------------------------------
我还有几个占位符需要替换(只是一个短字符串或一个词),所以我使用了以下 sed
命令,但是它 returns 出错了:
sed -e "s/${subject}//" \
-e "s/${client}/$NAME/" \
-e "s/${result}/$RESULT/" temp-email > client-email
错误:
sed: -e expression #3, char 64: unterminated `s' command
我知道这与 \n
有关,但我刚刚开始学习 bash 和 MIME,不知道如何用 $RESULT
[= 替换占位符20=]
提前致谢
您可以通过 \n
的使用参数扩展替换换行符
RESULT=${RESULT//$'\n'/'\n'}
或者使用 Perl 来处理替换中的换行符:
CLIENT=$NAME RESULT=$RESULT SUBJECT= perl -pe '
s/${(subject|client|result)}/$ENV{ uc }/g'