bash заменить mime-заполнитель на несколько строк - PullRequest
0 голосов
/ 05 июня 2018

У меня есть шаблон письма в MIME, и часть тела письма является заполнителем ${result}.

  <body>
      <p>${result}</p>
  </body>

В скрипте bash у меня есть переменная $RESULT, в которой хранится следующая таблица встрока.

----------------------------------------------------
           Sydney    Tokyo      London     New York      
product1      100      120           0           70
product2        4       80         210          110
product3      150       50          80           20
----------------------------------------------------

У меня есть пара дополнительных заполнителей, которые необходимо заменить (просто короткая строка или слово), поэтому я использовал следующую команду sed, однако она возвращает ошибку:

sed -e "s/\${subject}/$1/" \
    -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

Заранее спасибо

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете заменить символы новой строки на \n, используя расширение параметра usin

RESULT=${RESULT//$'\n'/'\n'}

Или используйте Perl, который может обрабатывать символы новой строки в заменах:

CLIENT=$NAME RESULT=$RESULT SUBJECT=$1 perl -pe '
    s/\${(subject|client|result)}/$ENV{ uc $1 }/g'
...