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脚本学习每日一句(2)

5月21号 晚上8点更新 employee文件中记录了工号和姓名 employee.txt: 100 Jason Smith  200 John Doe  300 Sanjay Gupta ...

每日一shell之例行任务管理at和cron命令

但一时刻执行一次任务atat now + 30 minutes//进入at命令并设定时间是从现在开始的30分钟后 /sbin/shutdown -h now//关机命令 之后用ctrl+D结束输入...

shell脚本学习每日一句(1)

shell的学习入门极难,这我是知道了,想想自己学习shell也差不多半年了,其中总是学学停停,没有一点儿的转眼劲儿,看来是不能将这shell学好了。所以想到这样的一招来督促自己好好学习shell,积...

shell每日一句(4)

6月4号 下午2点 把单个数据替换成单个字母与字符串替换的比较: 其中,‘y/abc/123/'就是指将单个字符对应的替换符号填充进去。a对应1、b对应2、c对应3 [root@fsai...

Titanium移动开发 命令行Shell 每日自动构建

以下脚本用于构建Android 和 iOS版本的Titanium应用。可以将脚本加入cron中,每日定时构建。...

每日一shell之字符处理grep sort uniq cut tr paste split

grep搜索文本grep -[icvn]‘匹配字符’ 文件名 -i不区分大小写 -c统计匹配行数 -n输出行号 -v反向匹配(就是不包含匹配字符的行) 需要注意的一点是有了-c这个选项输...

shell每日更新(7)

这里说明下最近一段时间一直没有更新的原因吧,也是自己偷懒的原因:上周的六级考试。 这里我会一直坚持写完shell的学习历程: 6月25号晚上9点 shell脚本编写的一些规则: 1,开头 程...

每日微软面试题——day 2

题:.给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。 分析:首先54张牌分别用0到53 的数值表示并存储在一个整形数组里,数组下标代表纸牌所在的位置。接下来,遍历整个数组,在遍历过程...

sql每日分享2

sqlserver1、sqlserver每日一问:您了解sql语言有什么用吗?为什么要学习?2.企业管理器的功能有那些?3.查询分析器中的窗口主要有哪些?它们的作用分别是?4.在SQL Server中...

每日三题-Day2-A(HDU 1074 Doing Homework 状压DP)

原题地址 Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Shell每日闪记2
举报原因:
原因补充:

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