shell脚本事例 -- 获取当前日期的前一天日期
记录一个shell脚本事例,事例中包括shell的一些语法(函数定义、表达式运算、if、case...)
#!/bin/sh #获取当前时间 RUN_TIME=`date +%H%M%S` #取当前日期前一天 get_ydate() { #设置当前年月日 TODAY=`date +%Y%m%d` month=`date +%m` day=`date +%d` year=`date +%Y` #字符转换称数字 month=`expr $month + 0` #取前一天 day=`expr $day - 1` #如果前一天为0,进行如下处理 if [ $day -eq 0 ]; then #取前一月月份. month=`expr $month - 1` #如果前一月为0,则取前一年,月份取第12月 if [ $month -eq 0 ]; then month=12 day=31 year=`expr $year - 1` #如果前一月份不为零,则根据月份来判断该天是该月的第几天 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 #按照YYYYMMDD格式打印年日期 acct_date=`printf "%04d%02d%02d" "$year" "$month" "$day"` echo $RUN_TIME echo $acct_date } get_ydate