shell 输出连续的日期(年、月、日)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值