下面这个脚本用来读取 gmail 中的未读邮件,默认输出头 5 封未读邮件,每一封未读邮件以下列行书输出:
脚本代码如下:
[Bash shell] 纯文本查看 复制代码 #!/bin/bash
username="你的GMAIL用户名"
password='你的GMAIL密码'
SHOW_COUNT=5 #输出头 5 封未读邮件
echo
curl-u $username:$password --silent "https://mail.google.com/mail/feed/atom" | \
tr -d '\n' | sed 's:</entry>:\n:g' | \
sed 's/.*<title>\(.*\)<\/title.*<author><name>\([^<]*\)<\/name><email>\([^<]*\).*/Author: \2 [\3] \nSubject: \1\n/' | \
head -n $(( $SHOW_COUNT * 3 ))
该程序主要对 GMAIL 的 RSS 进行解析,该 RSS feeds 地址是:https://mail.google.com/mail/feed/atom
如果使用浏览器登录,那么会看到下面的界面:
脚本代码正是对上面的页面进行解析与替换:
在代码中,首先用 curl登录系统,然后对页面输出流进行解析。首先 tr -d '\n'紀令是去掉所有的换行符,这样做之后,所有的行都会连到一起。
接着,使用 sed 's:</entry>:\n:g'紀令将所有的 </entry> 标签换成换行符,这样做的目的是以原来每个 </entry> 标签处做一个段落,实际就是一个行,这个行中当然也包含了所有每一封未读邮件的发件人姓名,发件人地址,以及邮件标题等信息。
sed 's/.*<title>\(.*\)<\/title.*<author><name>\([^<]*\)<\/name><email>\([^<]*\).*/Author: \2 [\3] \nSubject: \1\n/' | head -n $(( $SHOW_COUNT * 3 ))
这一段是一个相当长的替换,需要比较网页源码内容才可以更好的理解。其中 \1, \2, \3 分别依次对应着 3 个小括号的正则匹配。SHOW_COUNT * 3 的值在此为 15 ,这是因为在我们的输出格式中,一个完整的未读邮件信息段落占据 3 行,比如下面的输出: |