Как подставить значение переменной в нужном месте файла-шаблона?
С помощью команды stat получаю сведения о последнем изменении файла, которые записываются в файл FileTimeChenge
stat --format=%z ~/Price > FileTimeChenge
С помощью mutt осуществляю рассылку пользователем с вложением файла
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=«Content-Type» content=«text/html; charset=utf-8»>
</head>
<body>
<p><font ><em><strong>Здравствуйте!</strong></em></font></p>
<p>Файл изменён - "Тут должна быть дата"</p>
</p>
</body>
</html>
Подскажите, как вставить в html код данные из файла - FileTimeChenge
По совету пользователя @aleksandr barakin удалось получить вывод переменной при конкатенации
cat body | envsubst '${Test}'
Но, при выполнении цикла mutt в теле письма отображается переменная, а не значение переменной
for I in `cat list`; do cat body |envsubst '${Test}' | mutt -e "set content_type=text/html" -a "/var/log/mail.log" -s "Title" -- $I < body;echo $I;sleep 3 ;done
Ответы (1 шт):
сохраняете содержимое файла в переменную и экспортируете её:
$ export soderzhimoe=$(cat файл)
а для подстановки значений переменных используете, например, программу envsubst из пакета gnu/gettext:
$ cat файл.хтмл
<p>Файл изменён - "${soderzhimoe}"</p>
$ cat файл.хтмл | envsubst '${soderzhimoe}'
<p>Файл изменён - "то что было в 'файл'"</p>
аргумент с перечислением переменных для подстановки не обязателен, но лучше использовать его для безопасности — на случай, если в тексте у вас будут употреблены строки, похожие на обращения к существующим переменным окружения.
дополнение про ошибку:
вот в этом фрагменте:
envsubst '${Test}' | mutt -e "set content_type=text/html" -a "/var/log/mail.log" -s "Title" -- $I < body
у вас получается конструкция: программа1 | программа2 < файл, т.е. программа2 получает на stdin содержимое файла, а не вывод программы1. уберите чтение из файла, вот этот кусок: < body.