基本上,我需要从一个文件中获取姓,姓,用户名和年级然后我需要向该用户('username')发送一封电子邮件,看起来像这样:
"亲爱的'姓' '姓'!
你在"班级名称"考试中的成绩是"grade"。"
"类名"是通过shell的参数列表给出的,其余的信息在该文件中。
所以我一步一步地走。首先用awk打印出所需的布局
awk '{print "Dear",$1,$2 "!","nYour grade on the '$class' exam was ",$4;}' in.txt
工作好。然后我测试了我的邮件是否有效,它确实有效:
$ mail -s 'Subj' bando < /tmp/msg.txt
所以我需要把我的输出写入一个文本文件,这样我就可以把它发送给特定的用户。
这就是我的问题出现的地方。我试过几个版本,试着打印我的字符串到一个文件,但有一些问题,我不知道什么。echo和cat也是一样。我试着把它切成小块,但还是没有。
试试这个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命令将in.txt文件解析为$1,$2,$3,$4占位符。
然后在变量msg
中格式化邮件消息。
最后调用系统函数执行echo "<msg>" | mail -s 'Subj' $3
回显msg变量,并将其管道到邮件命令发送。这里需要使用反斜杠将msg变量用双引号括起来。