AIX 环境下取得昨天日期的 Shell

<h1>我需要使用自动shell导出昨天的数据库内容,由于aix的ksh不支持date -d命令,不得不选择其他方式来实现。</h1>
#!/bin/ksh  
# Var Declare  
#!/bin/sh  
# ydate: A Bourne shell script that  
# prints yestarday's date  
# Output Form: Month Day Year  
# change by chenjy 20161026

# Set the current month day and year.  
month=`date +%m`
day=`date +%d`
year=`date +%Y`

# Add 0 to month. This is a  
# trick to make month an unpadded integer.  
month=`expr $month + 0`

# Subtract one from the current day.  
day=`expr $day - 1`

# If the day is 0 then determine the last  
# day of the previous month.  
if [ $day -eq 0 ]; then

# Find the preivous month.  
month=`expr $month - 1`

# If the month is 0 then it is Dec 31 of  
# the previous year.  
if [ $month -eq 0 ]; then
   month=12
   day=31
   year=`expr $year - 1`
# If the month is not zero we need to find  
# the last day of the month.  
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 ] && [ `expr $year % 100` -ne 0 ] || [ `expr $year % 400` -eq 0 ] ) ; then
           day=29
       else
         day=28
       fi
#       if [ `expr $year % 400` -eq 0 ]; then  
#         day=29  
#       fi  
     ;;
   esac
fi
fi

case $day
     in 1|2|3|4|5|6|7|8|9) day='0'$day
esac
case $month
     in 1|2|3|4|5|6|7|8|9) month='0'$month
esac
echo $year$month$day  
                                             

相关内容推荐