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. 总结:以上只是两种循环方式,主要的就是如何控制日期的自动增加,判断是否结束。