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