Shell 输出连续日期
目的 : 给定起始与结束日期, 输出连续日期 (年、月、日)
应用场景 : 按照 年、月、日 来循环调度脚本.
一、输出连续的日期 (输出截止到昨天日期, 格式 yyyy-MM-dd)
#!/bin/sh
startTime="20191001"
endTime=`date -d '-1 day' +%Y%m%d`
while [ $startTime -le $endTime ]
do
dayTime=`date -d '$startTime' +%Y-%m-%d`
echo $dayTime
startTime=`date -d '$startTime +1 day' +%Y%m%d`
done
二、输出连续的月份 (截止今天所在的月份)
#!/bin/sh
startMonth="201910"
endMonth=`date +'%Y%m'`
#取开始|结束月份第一天,转换为秒,方便while比较
startSecond=`date -d "${startMonth}01" +%s`
endSecond=`date -d "${endMonth}01" +%s`
while [ $startSecond -le $endSecond ]
do
currentMonth=`date -d @$startSecond +%Y%m`
echo $currentMonth
startSecond=`date -d '${currentMonth}01 +1 months' +%s`
done
三、连续输出年 (截止今年)
#!/bin/sh
startYear="2001"
endYear=`date +'%Y'`
while [ $((10#${startYear})) -le $((10#${endYear})) ]
do
echo $startYear
startYear=$((10#${startYear}+1))
done
字符串转数字时参考: shell字符串转数字, 摘录重点如下
原型: value=$((n#${key}Xm))
value:自定义变量得到运算的值
n:欲转成的进制数; 2进制就是2,10进制就是10
key:字符串变量
X:操作符;如+ - * / &...
m:操作数
例如,10进制字符32加上32
a='32'
value=$((10#${a}+32))
[root@localhost testshell]# echo $a
64