脚本完成输入一个日期,输出日期前一天和后一天日期
# get the date of next day
#!/bin/bash
function nextday
{
read -p "input a correct day(YYYY mm dd): " year month day
today=$year$month$day
if [ ${#year} -eq 0 -a ${#month} -eq 0 -a ${#day} -eq 0 ];then
echo "the next day is : " `date -d "+1day" +"%Y %m %d"`
exit
elif [ ${#year} -ne 4 -o ${#month} -ne 2 -o ${#day} -ne 2 ];then
echo "Error: date format error"
exit
elif [ "$today" != "$(date -d $today +%Y%m%d 2>/dev/null)" ];then
echo "Error: no such date"
exit
fi
month=`expr $month + 0`
next_year=`expr $year + 0`
next_month=`expr $month + 0`
next_day=`expr $day + 1`
case $month in
1|3|5|7|8|10|12) max_day=31;;
4|6|9|11) max_day=30;;
2) max_day=28
[ `expr $year % 4` -eq 0 ] && max_day=29
[ `expr $year % 100` -eq 0 ] && max_day=28
[ `expr $year % 400` -eq 0 ] && max_day=29
;;
esac
if [ $day -eq $max_day ]
then
next_month=`expr $month + 1`
next_day=1
[ $next_month -eq 13 ] && next_year=`expr $year + 1` && next_month=1 && next_day=1
fi
[ $next_month -lt 10 ] && next_month="0$next_month"
[ $next_day -lt 10 ] && next_day="0$next_day"
tomorrow="$next_year $next_month $next_day"
echo "the next day is :"$tomorrow
last_year=`expr $year + 0`
last_month=`expr $month + 0`
last_day=`expr $day - 1`
if [ $day -eq 1 ]
then
last_month=`expr $month - 1`
last_day=$max_day
[ $last_month -eq 0 ] && last_year=`expr $year - 1` && last_month=12 && last_day=$max_day
fi
[ $last_month -lt 10 ] && last_month="0$last_month"
[ $last_day -lt 10 ] && last_day="0$last_day"
yesterday="$last_year $last_month $last_day"
echo "the last day is :"$yesterday
}
nextday