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


兄die 把你想获取的时间 通过传参的方式 然后脚本做一下判断,我没有做过,给你一个思路感觉还不错哦


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

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