Не могу понять, как отправить сигнал ^D (EOT) на mailx в bash-скрипте
Я пишу bash-скрипт для автоматической отправки мне электронного письма. Mailx требуется сигнал EOT или ^D, чтобы знать, что тело сообщения закончено и может отправлять. Я не хочу нажимать ^D на клавиатуре, когда я запускаю скрипт, что он и делает сейчас.
Вот мой код:
#! /bin/bash
SUBJ="Testing"
TO="test@test.com"
MSG="message.txt"
echo "I am emailing you" >> $MSG
echo "Time: `date` " >> $MSG
mail -s "$SUBJ" -q "$MSG" "$TO"
rm -f message.txt
2 ответа
Решение
Если вам не нужно добавлять больше текста и просто нужно отправить содержимое $MSG, вы можете заменить
mail -s "$SUBJ" -q "$MSG" "$TO"
с
mail -s "$SUBJ" "$TO" < "$MSG"
EOT
будет подразумеваться в <
построить. -q
действительно используется только для запуска сообщения. Остальное должно пройти через стандартный ввод.
Передайте вывод группы команд в mail
,
#! /bin/bash
SUBJ="Testing"
TO="test@test.com"
MSG="message.txt"
{
echo "I am emailing you"
echo "Time: `date` "
} | mail -s "$SUBJ" -q "$MGS" "$TO"
rm -f message.txt