You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash脚本中按指定小时迭代日期至5天后对应小时?

调整Bash脚本生成指定时间范围文件的方法

原脚本通过接收日期和小时参数创建文件,但当前逻辑会每天生成24小时的文件,不符合「从输入小时开始,迭代至5天后同一小时前」的需求。以下是调整方案:

修改后的脚本

#!/bin/bash
Input_Date=$1
Input_hour=$2

# 计算起始时间的时间戳(将输入的YYYYMMDD+HH转为时间戳)
start_ts=$(date -d "${Input_Date} ${Input_hour}:00:00" +%s)
# 计算结束时间:起始时间加5天(即5天后的同一小时)
end_ts=$(date -d "${Input_Date} ${Input_hour}:00:00 +5 days" +%s)

# 固定文件前缀:输入日期+输入小时
prefix="TEST_${Input_Date}${Input_hour}_"

# 循环迭代每一小时
current_ts=$start_ts
while [ $current_ts -lt $end_ts ]; do
    # 将当前时间戳转为YYYYMMDDHH格式
    current_datetime=$(date -d "@$current_ts" +%Y%m%d%H)
    # 创建目标文件
    touch "${prefix}${current_datetime}.txt"
    # 当前时间推进1小时(3600秒)
    current_ts=$((current_ts + 3600))
done

关键调整说明

  • 用时间戳简化逻辑:通过时间戳计算和迭代,避免手动处理跨天、跨月的日期边界问题,精准控制每一个小时的生成。
  • 明确时间范围:起始时间为输入的日期+小时,结束时间为起始时间加5天,循环中每次加1小时,刚好生成到5天前的最后一小时(比如输入20220315 06,会生成到2022031905的文件)。
  • 固定命名前缀:直接使用输入的日期和小时作为文件前缀,完全匹配需求中的命名格式。

原脚本问题分析

原脚本的嵌套循环会忽略输入小时,强制每天生成24小时的文件,导致生成范围不符合要求。改用时间戳迭代的方式,能精准覆盖需求的时间区间。

内容的提问来源于stack exchange,提问作者CaosWT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:19:54