shell 中 date 做 循环变量

本文介绍如何使用Shell脚本在特定日期范围内执行任务,通过while和for循环实现日期自动递增,并检查任务执行状态。

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

1. 需求:有时,可能希望脚本能够按照一段时间中,每天为一个参数来执行某个任务。例如开始时间为20130101,结束时间为20130301,由于日期变化不是简单的增加1,这里可以做如下处理。

2. 定义变量:

start_date=20130101
end_date=20130301

#shFIle 为某一sh文件 其参数为日期 [ 格式 20130101 ]

shFile ="/home/user/job.sh"

3. 方法1 while

while (( $start_date <= $end_date ))

do 
#当前日期
echo $start_date 
#执行当前日期的任务
sh $shFile $start_date
#检测执行是否正确
if [ $? -ne 0 ]; then
echo "${start_date} job failed!"
exit 1
fi
#修改日期
start_date=$(date -d "$start_date +1days" +%Y%m%d)
done

4. 方法2 for

for((;$start_date<=$end_date; start_date=$(date -d "$start_date +1days" +%Y%m%d)))

do 
#当前日期
echo $start_date 
#执行当前日期的任务
sh $shFile $start_date
#检测执行是否正确
if [ $? -ne 0 ]; then
echo "${start_date} job failed!"
exit 1
fi
done

5. 总结:以上只是两种循环方式,主要的就是如何控制日期的自动增加,判断是否结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值