
友達から誕生日の通知を受け取るための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時に実行します(またはコマンドの出力がメールで送信されるため)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を実行します。