Shellscript输出日期之间的整个间隔

时间:2016-01-25 21:53:36

标签: linux bash shell date intervals

我正在使用需要接收格式化在文本文件上的时间指令的设备,以便在基于小时的时间范围内制作备份副本。它有4个通道,所以我仍然需要标记通道。 格式为MMDDhhmmYYYY; C(其中MM =月,DD =天,hh = 24小时,mm =分钟,YYYY =年,C =频道号)

假设我需要在2016年1月25日14:00到2016年1月25日16:00之间为通道1和2指定一个2小时的间隔,我需要在文本文件中放置4行。

012514002016;1
012514002016;2
012515002016;1
012515002016;2    

可以手动执行此操作以进行小型查询,但是对于4个频道的一整天,我必须写入96行。 我愿意制作一些脚本来指定开始日期和时间,结束日期和时间以及要求的频道,然后将输出打印为所需格式的文本文件,但我甚至都不知道从哪儿开始。我看到很多脚本可以计算日期之间的间隔,但实际上没有显示间隔。客户端环境有限,但至少它是bash 4.0

1 个答案:

答案 0 :(得分:1)

嗯,这是一个开始。这个只增加了几个小时,不会带来几小时到几天,几分钟到几个小时,或实际上任何东西。

#!/bin/sh

MM=$1
dd=$2
hh=$3
mm=$4
yyyy=$5

h2=$6

ni=$7

while [ $ni -gt 0 ]; do
  for i in 1 2 3 4; do
    printf '%02d%02d%02d%02d%04d;%d\n' $MM $dd $hh $mm $yyyy $i
  done
  hh=$(($hh + $h2))
  ni=$(($ni - 1))
done

所以要在一天内做12个2小时的增量:

$ sh interval 01 25 14 00 2016 2 12