Не могу понять, как отправить сигнал ^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
Другие вопросы по тегам