shell中根据日期进行循环

本文介绍了一种在Shell脚本中实现指定日期范围内的循环方法,通过将日期转换为相对于1970-01-01的秒数来计算日期差,并按天递增循环。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写shell脚本时,我们经常会有需求,对某一个日期时间范围内进行循环处理,可以通过设置起止日期,在起止日期范围内进行循环,



```
dateStart="2016-11-16"
dateEnd="2017-03-07"


date_s=`date -d "${dateStart}" +%s`
date_e=`date -d "${dateEnd}" +%s`


while [ "${date_s}" -le "${date_e}" ];do
        statDate=`date -d @${date_s} +"%Y-%m-%d"`;

        echo $statDate;

# do something

        date_s=$((date_s+86400));
done
```
date命令 +%s 可以计算指定日期到1970-01-01 00:00:00的秒数(感觉更像是距离1970-01-01 08:00:00的时间)


```
date -d "1970-01-01 08:00:00" +%s
#结果是 0 
```
86400就是一天24小时的总秒数,如果需要在小时级别进行循环,可以每次增加3600
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值