很高兴能开始是新的知识点,我在使用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
哈,偷个懒,解决。。。