誕生日のお知らせ

誕生日のお知らせ

友達から誕生日の通知を受け取るためのbashシェルスクリプトの作成

考える

  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]  

ステップ3:実行許可

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)

「誕生日」ファイルの内容はすべて1行に同じ形式で表示されます。

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

答え2

シェルスクリプトが必要な作業である場合は、他の回答を確認してください。ただし、誕生日やその他の定期的な通知を受けたい場合は、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時に実行します(またはコマンドの出力がメールで送信されるため)calendarcron一部のシステムでは、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を実行します。

関連情報