LInux shell 编写记录-日期9月判断中遇到shell默认八进制计算

很高兴能开始是新的知识点,我在使用sh 运行hive脚本以后才发现不知不觉的时候我已经开始使用shell了。。。

稀里糊涂的就开始用shell了,希望我以后会好好系统的学习下。

———————————————————1—BUG—2020-03-18——————————————

    在shell中用到一个上月同期的日期情况,本来2020-03-05就直接上个月取到了2020-02-05,可是忽然想到了北部完遇到的二月份的那个闰月的上年没有29号的问题,就想到13578十腊才有31号,我就开始解决这个判断:

export last_month_day="04-31" # 上月的月日 
export last_month_tq_day=31 # 上月的月日
if [[ $last_month_day -eq "02-30" ]]
then last_month_tq_day="30"
fi;
if [[ $last_month_day -eq "02-29" ]]
then last_month_tq_day="30"
fi;
if [[ $last_month_day -eq "04-31" ]]
then last_month_tq_day="30"
fi;
if [[ $last_month_day -eq "06-31" ]]
then last_month_tq_day="30"
fi;
if [[ $last_month_day -eq "09-31" ]]
then last_month_tq_day="30"
fi;
if [[ $last_month_day -eq "11-31" ]]
then last_month_tq_day="30"
fi;
echo $last_month_tq_day 

shell我暂时只会写这中if结构,哈哈

按理说31号的问题解决了,但是,我一般都要逐个全部测试一次。。

注意:测到  export last_month_day="09-31" # 上月的月日 这句的时候,意外来了:

原来在shell中遇到 0开头的数字,默认会以八进制来计算,也就是说到8时就会溢出,网上说可以强制 还用10#搞成10进制,不过我并不是要计算,我的解决方法:

export last_month_day="09-31" # 上月的月日 
export last_month_tq_day=31 # 上月的月日
if [[ $last_month_day -eq "02-30" ]]
then last_month_tq_day="30"
fi;
if [[ $last_month_day -eq "02-29" ]]
then last_month_tq_day="30"
fi;
if [[ $last_month_day -eq "04-31" ]]
then last_month_tq_day="30"
fi;
if [[ $last_month_day -eq "06-31" ]]
then last_month_tq_day="30"
fi;
# 特殊处理09
export jiu=${last_month_day:1:1}
if [[ $jiu -eq "9" ]] && [[ $last_month_tq_day -eq "31" ]]
then last_month_tq_day="30"
fi;
if [[ $last_month_day -eq "11-31" ]]
then last_month_tq_day="30"
fi;
echo $last_month_tq_day 

哈,偷个懒,解决。。。

 

——————————————END—————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值