使用shell脚本遍历日期

1. 按天倒序遍历日期 ( 正序修改一下日期增减函数即可 )

#!/bin/bash

#倒序按天遍历日期

#传入遍历的开始时间和结束时间

startdate="$1"

enddate="$2"

echo 'startdate: '$startdate

echo 'enddate: '$enddate

echo "-----------------------------------"

#序列1-300,表示遍历300次,因为有结束时间的限制,所以实际上不会循环300次

for i in `seq 1 300`; do

#当开始时间小于结束时间时,直接结束脚本

if [[ $startdate -lt $enddate ]]; then

break

fi

echo $startdate

#执行hiveSQL脚本,我是需要按日期执行hiveSQL,这里可以无视

hive -hiveconf input_date=$startdate -f mergeSmallFiles.sql # >> mergeSmallFiles.txt

#每次执行后,使开始日期减一天,如果要正序,将下面-1换成+1即可,当然开始时间和结束时间也要换一下

startdate=$(date -d "$startdate -1 day" +%Y%m%d)

done

运行结果如下:

2. 按小时倒序遍历日期 ( 正序修改一下日期增减函数即可 )

因为shell中没有小时加减的函数,所以这里要做几个步骤:

#!/bin/bash

#倒序按小时遍历时间

startdate="$1"

enddate="$2"

echo 'startdate: '$startdate

echo 'enddate: '$enddate

echo "-----------------------------------"

for i in `seq 1 300`; do

if [[ $startdate -lt $enddate ]]; then

break

fi

echo $startdate

#拼接成YYYYmmdd HH的格式,否则使用下个命令中+%s,会无法转换

startdate=${startdate:0:4}"-"${startdate:4:2}"-"${startdate:6:2}" "${startdate:8:2}

#转换成时间戳,+%s为时间格式

startdate=$(date +%s -d "$startdate")

#每次执行后,开始日期减一个小时

startdate=$(($startdate-1*60*60))

#时间戳转正常格式时间

startdate=$(date +%Y%m%d%H -d "1970-01-01 UTC $startdate seconds")

#执行hiveSQL脚本,可以无视掉

hive -hiveconf input_date=$startdate -f mergeSmallFiles.sql # >> mergeSmallFiles.txt

done

运行结果如下:

linux 循环小时,shell脚本日期遍历(按天按小时)相关推荐

  1. linux循环条件,shell脚本编写 之 条件选择,条件判断,循环语句

    1 概述 编写shell脚本,一般离不开条件选择,条件判断以及循环语句.掌握这三个语法,将大大提高脚本的编写效率,使得脚本编写更加灵活,完成X相对复杂的工作 2 条件选择if语句 if语句选择执行,逐 ...

  2. linux 循环每个月,SHELL脚本每月最后一天判断

    #!/bin/bash ####函数定义 function monBigorSmall() { big_month=(1 3 5 7 8 10 12) small_month=(4 6 9 11) y ...

  3. linux下执行shell脚本文件,Linux下使用shell脚本自动执行脚本文件

    搜索热词 以下实例本人在Centos6.5 64位操作系统中使用 一.定时复制文件 a.在/usr/local/wfjb_web_back目录下创建 tomcatBack.sh文件 #将tomcat中 ...

  4. Linux 定时执行shell 脚本

    2019年第 85 篇文章,总第 109 篇文章 本文大约2000字,阅读大约需要6分钟 crontab 可以在指定的时间执行一个shell脚本以及执行一系列 Linux 命令. 定时执行shell ...

  5. linux定时执行shell脚本

    linux定时执行shell脚本 需求:每分钟检查下文件是否存在 解决思路: 1.编写shell脚本,检查文件是否存在,存在在文件中记录yes,不存在记录no 2.将脚本加入linux定时任务cron ...

  6. linux下的shell脚本,linux下的shell脚本的使用

    什么是shell? Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户.这种对话方式可是交互 ...

  7. linux 定时执行搅拌,Linux上定时shell脚本

    本文主要介绍在Linux系统上部署定时器,定时执行shell脚本,通过脚本执行sql文件 sql文件 -- 创建表 create table if not exists iot_test.iot_ta ...

  8. linux执行shell过程日志,Android之在linux终端执行shell脚本直接打印当前运行app的日志...

    1.问题 我们一般很多时候会需要在ubuntu终端上打印当前运行app的日志,我们一般常见的做法是 1).获取包名 打开当前运行的app,然后输入如下命令,然后在第一行TASK后面的就可以看到包名 a ...

  9. shell脚本:遍历指定文件夹下.jar后缀的文件,并备份到目标文件夹

    shell脚本:遍历指定文件夹下.jar后缀的文件,并备份到目标文件夹 批量备份源文件夹下的所有jar包 并用原名+日期时间重命名 过程如下: 创建一个sh文件: vim test.sh 按 i 进入 ...

最新文章

  1. 想学新的编程语言?考虑下Go吧
  2. 计算机二级c常用函数,计算机等级考试二级C语言的常用库函数试题
  3. 【 MATLAB 】unmkpp 函数介绍
  4. TSQL--NESTED LOOPS JOIN
  5. 在简历中应用STAR法则
  6. c语言 数组递减输出,合并两个线性表(数组)并按照非递减排序输出,有点问题过来看看...
  7. 如何远程调试部署在CloudFoundry平台上的nodejs应用
  8. xpath 取标签下所有文字内容_xpath提取目录下所有标签内的内容,递归 //text()...
  9. 关于wsgi协议的理解
  10. qt调用仪器驱动库dll实现程控
  11. 电工基础知识电线电缆常识80问答
  12. EEGLAB合辑 | 第一节 往EEGLAB导入数据
  13. 微信群管理机器人php,一个人管理微信群太累,试试可以自动管群微信机器人
  14. 阿里天池大数据竞赛——口碑商家客流量预测 A1
  15. 关于Chrome浏览器书签被更改的分析
  16. background 互联网图片_微信小程序 background-image设置背景图片不显示的解决办法...
  17. Windows主机操作系统安全加固规范
  18. 牛客华为机试-查找排序
  19. 淘宝商城 入住费用
  20. perl脚本提取后仿中的notimingcheck路径

热门文章

  1. 关于java中数据类型叙述正确的是( )_关于Java中数据类型叙述正确的是:
  2. Javascript变量的使用第三课
  3. 大理大学日常作业计算机基础知识,大理学院成人高等教育大学计算机基础课程作业.doc...
  4. turtle fillcolor_超详细!turtle库的使用
  5. linux管道和tee命令
  6. Vue.创建工程卡住
  7. Requests接口测试(五)
  8. js,css压缩工具
  9. PowerDesigner模型设计1
  10. ffmpeg七大库功能介绍——机翻、非人话