linux - Shell 脚本输出日期之间的整个间隔

标签 linux bash shell date intervals

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

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

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

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

最佳答案

好吧,这是一个开始。这只会增加小时数,不会将小时数增加到天数,或者从分钟数增加到小时数,或者实际上任何东西。

#!/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

关于linux - Shell 脚本输出日期之间的整个间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35003129/

相关文章:

php - 如何使用 exec 命令支持 PHP 变量?

vim - 在 Vim 插入模式下,有没有办法添加文件路径自动补全?

Bash 脚本无法在新的专用服务器上运行

bash - 如何在 linux [bash shell] 中传递 ' [单引号字符] 作为参数?

linux - sh文件没有在cron ubuntu上运行

bash - 如何将多个命令通过管道传递给 bash?

java - linux上哪里可以找到java虚拟机日志

linux - 无论如何都可以附加到流程的 map ,同时让您的文件从 map 中隐藏起来

c++ - 使用标准 C++ fstream 在串行设备 (/dev/ttyGS0) 上读写?

node.js - 设置终端命令以在 Crontab 中运行