Shell中日期运算
发表于 : 2007-11-27 19:04
#!/bin/sh
###############################
# A Bourne Shell Script #
# 功能: 打印昨天的日期 #
# 输出格式: Year Month Day #
################################
# 设置当前的年、月、日
month=`date +%m`
day=`date +%d`
year=`date +%Y`
# 月份加0,使得月份成为“整型”![]()
month=`expr $month + 0`
# 当前日期减一,得到昨天的日子
day=`expr $day - 1`
# 如果上面得到的昨天的日子为0的话就得考虑月份了
if [ $day -eq 0 ]; then
# 当前月份减一得到上一个月份
month=`expr $month - 1`
# 如果上面得到的上一个月份为0的话就得考虑年份了
if [ $month -eq 0 ]; then
month=12
day=31
year=`expr $year - 1`
# 如果月份非0就需要确定当前月份的天数
else
case $month in
1|3|5|7|8|10|12) day=31;;
4|6|9|11) day=30;;
2)
if [ `expr $year % 4` -eq 0 ]; then
if [ `expr $year % 400` -eq 0 ]; then
day=29
elif [ `expr $year % 100` -eq 0 ]; then
day=28
else
day=29
fi
else
day=28
fi
;;
esac
fi
fi
# 打印出昨天的年、月、日
echo $year $month $day
exit 0
上面是一个得到昨天日期的SHELL,其实十天后的可以类推的。
基本的思想是一样的。
1. expr运算符;
2. 关于跨月、跨年的判断。