编辑代码

#!/bin/bash
read -n 8 -p "input your time:" date1
echo ''
read -p "input your number:" N
echo ''
read -n 1 -p  "please input "+" else input "-":" f
echo ''
#date=$date1
#echo $date

#字符偏移,截取长度
Y=${date1:0:4}
M=${date1:4:2}
D=${date1:6:2}

#echo $Y
#echo $M
#echo $D
#val=`expr $Y + 3`
#echo $val

DN=`expr $D + $N`
DN3=`expr $D - $N`

if [ $f = "+" ]
then

    case $M in
    #31天
    01) 
        #天数加完后小于等于31
        if [ $DN -le 31 ]
        then
            #echo "$Y$M$DN"
            printf '%02d' $Y $M $DN
        #大于
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    02) 

        if [ $(($Y%4)) -eq 0 ]&&[ $(($Y%100)) -ne 0 ]||[ $(($Y%400)) -eq 0 ]
        then
            if [ $DN -le 29 ]
            then
                printf '%02d' $Y $M $DN
            elif [ $DN -gt 29 ]
            then
                MN=`expr $M + 1`
                DN2=`expr $DN - 29`
                printf '%02d' $Y $MN $DN2
            else
                echo "input your number"
            fi
        else
            if [ $DN -le 28 ]
            then
                printf '%02d' $Y $M $DN
            elif [ $DN -gt 28 ]
            then
                MN=`expr $M + 1`
                DN2=`expr $DN - 28`
                printf '%02d' $Y $MN $DN2
            else
                echo "input your number"
            fi
        fi
    ;;
    03)
        if [ $DN -le 31 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    04)
        if [ $DN -le 30 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 30 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 30`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    05)
        if [ $DN -le 31 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    06)
        if [ $DN -le 30 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 30 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 30`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    07)
            if [ $DN -le 31 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    08)
        if [ $DN -le 31 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    09)
        if [ $DN -le 30 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 30 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 30`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    10)
        if [ $DN -le 31 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    11)
        if [ $DN -le 30 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 30 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 30`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    12)
        if [ $DN -le 31 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;    
    *)  
        echo '月份请输入01~12之间的数字'
    ;;
    esac

elif [ $f = "-" ]
then
    case $M in
    #31天
    01) 
        #天数减完后小于0
        if [ $DN3 -gt 0 ]
        then
            #echo "$Y$M$DN3"
            printf '%02d' $Y $M $DN3
        #小于等于0
        elif [ $DN -lt 0 ]
        then
            MN=`expr $M - 1`
            DN4=`expr 31 - $DN3`
            printf '%02d' $Y $MN $DN4
        else
            echo "input your number"
        fi
    ;;
    02) 

        if [ $(($Y%4)) -eq 0 ]&&[ $(($Y%100)) -ne 0 ]||[ $(($Y%400)) -eq 0 ]
        then
            if [ $DN -le 29 ]
            then
                printf '%02d' $Y $M $DN
            elif [ $DN -gt 29 ]
            then
                MN=`expr $M + 1`
                DN2=`expr $DN - 29`
                printf '%02d' $Y $MN $DN2
            else
                echo "input your number"
            fi
        else
            if [ $DN -le 28 ]
            then
                printf '%02d' $Y $M $DN
            elif [ $DN -gt 28 ]
            then
                MN=`expr $M + 1`
                DN2=`expr $DN - 28`
                printf '%02d' $Y $MN $DN2
            else
                echo "input your number"
            fi
        fi
    ;;
    03)
        if [ $DN -le 31 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    04)
        if [ $DN -le 30 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 30 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 30`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    05)
        if [ $DN -le 31 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    06)
        if [ $DN -le 30 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 30 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 30`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    07)
            if [ $DN -le 31 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    08)
        if [ $DN -le 31 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    09)
        if [ $DN -le 30 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 30 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 30`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    10)
        if [ $DN -le 31 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    11)
        if [ $DN -le 30 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 30 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 30`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;
    12)
        if [ $DN -le 31 ]
        then
            printf '%02d' $Y $M $DN
        elif [ $DN -gt 31 ]
        then
            MN=`expr $M + 1`
            DN2=`expr $DN - 31`
            #echo "$Y$MN$DN2"
            printf '%02d' $Y $MN $DN2
        else
            echo "input your number"
        fi
    ;;    
    *)  
        echo '月份请输入01~12之间的数字'
    ;;
    esac
else
   echo "请输入+或者-号"
fi