日期:2014-05-16  浏览次数:20740 次

用shell函数取不到返回值,为什么?
代码如下:


getPrevDate(){    
    #   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   $1   from   the   current   day.  
    day=`expr   $day   -   $1`  
   
    #   If   the   day   is   0   or   less   than   0   then   determine   the   last  
    #   day   of   the   previous   month.  
    if   [   $day   -eq   0   -o   $day   -lt   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=`expr   31   +   $day`;;  
        4|6|9|11)   day=`expr   30   +   $day`;;  
        2)  
            if   [   `expr   $year   %   4`   -eq   0   ];   then  
                if   [   `expr   $year   %   400`   -eq   0   ];   then  
                day=`expr   29   +   $day`  
                elif   [   `expr   $year   %   100`   -eq   0   ];   then  
                day=`expr   28   +   $day`  
                else  
                day=`expr   29   +   $day`  
                fi  
            else  
                day=`expr   28   +