我第一个shell Script

计算还有几天过生日

代码如下所示

#!/bin/bash
months[0]=31
months[1]=0
months[2]=31
months[3]=30
months[4]=31
months[5]=30
months[6]=31
months[7]=31
months[8]=30
months[9]=31
months[10]=30
months[11]=31
echo "What's your birthday?(xx month xxday)"
read BirthdayMonth
read BirthdayDay
function YearTest()
{

m=$1%4
n=$1%400
p=$1%100
if [ "$n" == 0 ];
then
return 29
elif [ "$m" == 0 ] && [ "$p" != 0 ];
then
return 29
else
return 28
fi
}
function Count()
{
if [ "$2" -lt "$3" ];
then
for((q=0; q<$(($a-1)); q++))
do
m=months[$q]
k=$(($m+$k))
done
k=$(($2+$k-1))
for((j=$a; j<12; j++))
do
n=months[$j]
k=$(($k+$n))
done
echo "Your birthday $(($k+$2)) days later"
else
echo "Your birthday $(($2-$3)) days later"
         fi
}
function calculate()
{
CurrentMonth=$(date +%m)
CurrentDay=$(date +%d)
NextYear=$(($(date +%Y)+1))
a=$(($CurrentMonth-1))
b=$(($BirthdayMonth-1))


if [ "$BirthdayMonth" -ge "$CurrentMonth" ];
then
temp=0
for(( i=$a; i<$b ;i++))
do
t=months[$i]
temp=$(($t+$temp))
done

echo " Your birthday $(($temp-$CurrentDay+$BirthdayDay-1)) days later"
elif [ "$BirthdayMonth" -lt "$CurrentMonth" ];
then
YearTest $NextYear
months[1]=$?
k=0
m=0
for((q=0; q<$(($a-1)); q++))
do
m=months[$q]
k=$(($m+$k))
done
k=$(($BirthdayDay+$k))
for((j=$a; j<12; j++))
do
n=months[$j]
k=$(($k+$n))
done
echo "Your birthday $(($k-$CurrentDay-1)) days later"
else
count $BirthdayDay $CurrentDay
fi
}
CurrentYear=$(date +%Y)
YearTest $CurrentYear
months[1]=$?
calculate

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值