思心師 2021-11-25 16:48 采纳率: 0%
浏览 29

shell脚本问题,关于时间格式的判断?

我现在需要输入一个时间,然后拿到这个时间去cp一些对应时间的bag和log,但输入时间的格式需要判断,这个时间有多种输入方式,比如2021-11-11或者2021-11-11-22 这时候我需要精确到小时,这时候我的if判断条件应该怎么写,下面是一部分代码

read -t 50 -p "输入你要拷取bag和log时间点:" DATE

#判断输入的时间格式是否输入正确
if echo ${DATE} | grep -Eq "[0-9]{4}-[0-9]{2}-[0-9]{2}" && date -d ${DATE} +%Y%m%d > /dev/null 2>&1
then   
        echo "拷取完成"
else
    echo "输入的日期格式不正确,应为yyyy-mm-dd HH";
fi


  • 写回答

1条回答 默认 最新

  • 思心師 2023-07-12 17:50
    关注
    
    #!/bin/bash
    
    read -t 50 -p "输入你要拷取bag和log时间点:" DATE
    
    # 判断输入的时间格式是否正确并提取日期和小时
    if [[ ${DATE} =~ ^([0-9]{4}-[0-9]{2}-[0-9]{2})(-([0-9]{2}))?$ ]]; then
        FULL_DATE=${BASH_REMATCH[1]}  # 提取日期,格式为:yyyy-mm-dd
        HOUR=${BASH_REMATCH[3]}  # 提取小时,格式为:HH
    
        # 只有在匹配到小时部分时,才执行拷贝操作
        if [[ -n "$HOUR" ]]; then
            # 拷贝操作示例,请根据你的实际情况进行修改
            DATE_LOG=${FULL_DATE}-${HOUR}
            echo "拷贝log文件:${DATE_LOG}.log"
            echo "拷贝bag文件:${DATE_LOG}.bag"
        fi
    else
        echo "输入的日期格式不正确,应为yyyy-mm-dd 或者 yyyy-mm-dd-HH";
    fi
    

    代码会先判断输入的时间格式是否正确,并提取日期和小时。如果匹配到小时部分,则执行拷贝操作,并打印相关的拷贝文件名。你需要将拷贝操作的实际代码替换掉注释部分。请注意,这里的拷贝操作只是示例,请根据你实际的需求和文件存储位置进行修改。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月25日

悬赏问题

  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器