生日提醒

生日提醒

编写一个 bash shell 脚本来获取朋友生日的提醒

认为

  Birthday Date       Friend's name 
  08-02-2014          : Prashant 
  08-15-2014          : prabhat 
  09 -16 -2014        : Aks
  12-30-2014          : Bks

对于单身生日,我可以使用crontab

Step 1: create a file vi birthday.sh 

Step 2: 

echo " Birthday alerts: today is Prashant 's Birthday Wish!! him " |mail -s "b-alert" [email protected]  

第三步:授予执行权限

chmod u+x birthday.sh 

步骤 4:使用 cron 运行脚本birthday.sh

00 00 02 08 *  /home/user/birthday.sh

但怎么办呢?为了获得多个生日的警报,我可以创建每个生日的脚本,但我认为最好不要这样做。我只想要一个脚本来获得

生日到来时所有生日提醒

答案1

根据要求,下面是一个有效的 bash 脚本。我在每个用户“记录”中使用“=”符号字段分隔符,并且空格是记录分隔符。请注意,为了完整性,我添加了虚构的电子邮件。


#!/bin/bash
#
DATE=$(date '+%m-%d-%Y')
bdays='[email protected] [email protected] [email protected] [email protected]'

for i in $bdays do bday=$(echo $i | awk -F= '{print $1}') name=$(echo $i | awk -F= '{print $2}') email=$(echo $i | awk -F= '{print $3}') [[ $DATE = $bday ]] && { echo " Birthday alerts: today is $name 's Birthday Wish!! " |mail -s "b-alert" $email } done

要从文件中读取生日,请将 bdays='....' 替换为:

bdays=$(cat Birthday)

“生日”文件内容将采用相同的格式,全部在一行上:

[email protected] [email protected] [email protected] [email protected]

答案2

如果这是一个需要编写 shell 脚本的作业,请查看其他答案。但如果您想获得生日或其他任何定期警报,您可以使用该calendar命令,该命令包含在大多数 Unix 系统中。

在 Linux 上:

$ mkdir ~/.calendar
$ echo -e "Jul 30\tMother's Birthday" >> ~/.calendar/calendar
$ echo -e "08/02\tPrasant's Birthday" >> ~/.calendar/calendar
$ echo -e "Aug 15\tPrabhat's Birthday" >> ~/.calendar/calendar 
$ # note that you need to have a tab between the date and the event description
$ calendar
Jul 30  Mother's Birthday

你可以把

0 2 * * * calendar|mail -s "b-alert" [email protected]

在你的 crontab 中,每天早上 2 点运行(或者只是calendar,因为cron会将命令的输出邮寄给你)。在某些系统上,calendar默认情况下每天清晨都会为每个人运行。

您可以在每次登录时calendar输入要运行的内容。~/.bash_profile

答案3

这是狡猾的伪代码的答案。您可以用任何您喜欢的语言来实现。

具有格式一致的日期(称为“生日”)的文件。

today=GET_TODAYS_DATE()
While not end of file birthdays
do
  read from file DATE NAME
  if today=DATE then
       mail address with "Today is NAME's birthday"
  endif
endwhile

每天午夜过后 1 分钟在 cron 中运行它。

相关内容