Как отправить пользователям письмо с определенным шаблоном из файла в Linux (шаблон содержит информацию из файла)? - PullRequest
1 голос
/ 12 апреля 2011

В основном я должен взять фамилию, фамилию, имя пользователя и оценку из файла, и я должен отправить электронное письмо этому пользователю («имя пользователя»), которое выглядит примерно так:

«Уважаемая фамилия», «Фамилия»!
Ваша оценка на экзамене «Имя класса» была «Оценка». »

« Имя класса »дается через список параметров оболочкиостальная информация находится в этом файле.

Так что я пошёл шаг за шагом.Сначала распечатайте с помощью awk желаемый макет

awk '{print  "Dear",$1,$2 "!","\nYour grade on the '$class' exam was ",$4;}' in.txt

Работает нормально.Затем я проверил, работает ли мое почтовое сообщение:

$ mail -s 'Subj' bando < /tmp/msg.txt

Поэтому мне нужно записать свой вывод в текстовый файл, чтобы я мог отправить его конкретному пользователю.

Это где мойвозникли проблемы. Я перепробовал несколько версий, попытался распечатать мою строку в файл, но с ней что-то не так, и я не знаю что.То же самое с эхом и кошкой.Пытался нарезать его на мелкие кусочки, но все равно ничего.

1 Ответ

2 голосов
/ 12 апреля 2011

Попробуйте эту команду awk, чтобы прочитать из in.txt и отправить электронное письмо:

class='9th'
awk '{msg="Dear " $1 " " $2 "!,\nYour grade on the '$class' exam was " $4; system("echo \"" msg "\" | mail -s 'Subj' " $3);}' in.txt

где, как вы in.txt файл выглядит следующим образом:

cat in.txt
Lname Fname foobar@example.com 7.6

Объяснение:

Команда awk разбирает файл .txt на заполнители $ 1, $ 2, $ 3, $ 4.

Затем форматирует почтовое сообщение в переменной msg.

Наконец, он вызывает системную функцию для выполнения echo "<msg>" | mail -s 'Subj' $3 для вывода переменной msg и передачи ее в команду mail для отправки. Обратные слеши необходимы для того, чтобы заключить переменную msg в двойные кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...