Shell每日闪记2

原创 2016年08月31日 09:17:35

需求:利用mail命令向朋友们批量发送聚会的邀请,称呼(或者还有其他内容)因人而异。


Preliminaries:本地系统已配置好email服务,具体配置可参考

http://blog.csdn.net/zhuying_linux/article/details/7091688

http://blog.csdn.net/hitabc141592/article/details/25986911


方案1:直接采用for循环


脚本文件email如下:

#!/bin/bash
for name in Peter Mike
do
echo "Dear $name,

Hi! I'm glad to inform you that there will be a party this Friday night at my place. I'd appreciate it if you could come.

Sincerely,
Kinosum" | mail -s "Invitation" $name@null.com
done

 评论:如果除了称呼,还要引入其他变量(比如说上面的邮箱地址的域名不都是null.com),则需要多个for循环嵌套,但这种嵌套意味着这些变量之间的组合的穷举,除非这正是我们所需求的,不然这种“吹尽狂沙始到金”的执拗便是小题大做。


方案2:利用事先编制好的列表

我们可以先建立一个文件'list',每一行为一个记录,根据需求分成多个字段,为了和字段中可能出现的空白符相区分,我们就用逗号‘,’作为分隔符。建立好的文本文件形如(每行依次为称呼,关系和邮箱地址):
Peter,brother,peter@null.com
Mike,colleague,mike@null.com

然后,脚本文件email如下:
#!/bin/bash
cat list | while read line
do
name=$(echo $line | cut -d "," -f 1)
identity=$(echo $line | cut -d "," -f 2)
email=$(echo $line | cut -d "," -f 3)
echo "Dear $name,

Hi! I'm glad to inform my beloved $identity you that there will be a party this Friday night at my place. I'd appreciate it if you could come.

Sincerely,
Kinosum" | mail -s "Invitation" $email
done

版权声明:本文为博主原创文章,未经博主允许不得转载。

Shell每日闪记1

问:批量地在当前目录(包含子目录)中的某些文件(例如*.gnu)的开头插入一些固定内容的行(例如"set term jpeg size 600,900 …")。 答:find . -name '*...
  • denalmighty
  • denalmighty
  • 2016年08月30日 21:23
  • 50

每天一个shell命令(更新中)

shell中常见的命令 1.set -e 父进程中有这个命令,当子进程异常退出(返回非零),父进程就会终止,不继续执行; 2.set +e 子进程exit 1或者其他非零值时,父进程会继续执...
  • AQ_cainiao_AQ
  • AQ_cainiao_AQ
  • 2017年06月07日 17:45
  • 400

shell 练习题 11—20,内附答案。

shell 练习题,内附答案。
  • CityzenOldwang
  • CityzenOldwang
  • 2017年04月23日 20:08
  • 913

[原创]每日构建实践篇(二)

     之前我们已经获取了当前项目的所有的代码,并把他们放入了指定的目录。下面是如何构建这些代码。本文以介绍VC的批处理过程,要注意的是,VC6的处理过程和VC.NET是不同,首先我们来看VC6如何...
  • snaill
  • snaill
  • 2004年10月13日 13:11
  • 1488

日取现3万?

近日,深圳的银行根据上级的指示,规定,每人每天只能取现3万,目的是为了打击那些所谓的职业取款人,遏制过多的人民币通过地下钱庄流向香港,去香港买卖股票。对于这件事事情,香港那边的任总也说了,不排除有钱通...
  • dy2712
  • dy2712
  • 2007年11月16日 10:52
  • 402

shell计算日期之间的天数

2015-08-05 成都 1. 利用date将日期转化为秒数$(date +%s -d "$date") 2.计算日期之间的差值,除以一天的秒数,得到相差的天数 ---------------...
  • qq123386926
  • qq123386926
  • 2015年08月05日 20:05
  • 388

C语言每日小练(一)——n!问题

例:输入n,计算S = 1!+2!+3!+...+n!的末6位。n 样例输入:10 样例输出:37913 解:法(1)直接模拟阶乘求和过程,代码如下: #include #define M...
  • u012904198
  • u012904198
  • 2014年04月08日 19:09
  • 1237

shell中>&2的含义及用法

在阅读《Shell脚本学习指南》时,看到这么一段代码 if [ -f "$file" ] && ! [ -w "$file" ] then # $file存在且为一般文件,但不可写入 ...
  • u011598848
  • u011598848
  • 2014年03月21日 14:38
  • 1343

2015年11月17日

一.IMOOC学习了函数章节1到10章 //函数的调用 #include int jjj() {  printf("**********\n");  return 0; }  ...
  • qq_29464127
  • qq_29464127
  • 2015年11月19日 10:35
  • 229

每日一shell之route

Linux主机间是用IP进行通信,如果两个主机在同一个网段内,它们可以通过交换机进行通信(如果路由器更好了),如果不在同一网段内,就需要通过路由器,每一个网段都至少有一个网关(连接不同网段的设备,这里...
  • u013246898
  • u013246898
  • 2016年11月01日 21:50
  • 262
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Shell每日闪记2
举报原因:
原因补充:

(最多只允许输入30个字)