sh/bash/dash/ksh/zsh等Shell脚本
-
yuffey
- 帖子: 193
- 注册时间: 2007-09-06 16:24
- 来自: 中国上海
#1
帖子
由 yuffey » 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. 关于跨月、跨年的判断。
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#2
帖子
由 eexpress » 2007-11-27 20:29
不如编程软件的库了。这个不是shell强项。
● 鸣学
-
bones7456
- 帖子: 8495
- 注册时间: 2006-04-12 20:05
- 来自: 杭州
-
联系:
#3
帖子
由 bones7456 » 2007-11-29 10:02
这个.自己搞的话,容易出错的,练手还可以.