shell判断字符串格式是否为yyyy-mm-dd
时间: 2023-05-08 17:58:21 浏览: 69
Shell可以通过正则表达式匹配的方式判断一个字符串是否符合yyyy-mm-dd的日期格式。
方法如下:
1. 使用date命令将字符串转换为日期格式
2. 再将转换后的日期格式用"%Y-%m-%d"进行格式化,判断是否等于原字符串
示例代码如下:
```shell
#!/bin/bash
is_date() {
date -d "$1" "+%Y-%m-%d" > /dev/null 2>&1
if [ "$?" -eq 0 ] && [ "$1" == $(date -d "$1" "+%Y-%m-%d") ]; then
return 0 #符合日期格式
else
return 1 #不符合日期格式
fi
}
# 测试
if is_date "2022-01-01"; then
echo "符合日期格式"
else
echo "不符合日期格式"
fi
if is_date "2022-13-01"; then
echo "符合日期格式"
else
echo "不符合日期格式"
fi
```
上述代码中,is_date函数接收一个字符串参数,使用date命令将其转换为日期格式,并用"%Y-%m-%d"格式化。如果格式化后的日期字符串等于原字符串,则返回0,表示符合日期格式;否则返回1,表示不符合日期格式。最后进行测试,输出结果为:
```
符合日期格式
不符合日期格式
```
这说明该函数可以判断字符串是否符合yyyy-mm-dd格式。
相关问题
shell字段拼接日期_Shell脚本中的YYYY-MM-DD格式日期
在Shell脚本中,可以使用date命令来获取当前的日期,并将其转换为指定格式的字符串。以下是一个示例脚本,它将当前日期转换为YYYY-MM-DD格式的字符串并将其赋值给变量date_str:
```
#!/bin/bash
# 获取当前日期并转换为YYYY-MM-DD格式
date_str=$(date +"%Y-%m-%d")
echo "当前日期是:$date_str"
```
如果想要拼接日期字段到其他字符串中,可以使用变量引用的方式,例如:
```
#!/bin/bash
# 获取当前日期并转换为YYYY-MM-DD格式
date_str=$(date +"%Y-%m-%d")
# 拼接日期字段到字符串中
file_name="log_$date_str.txt"
echo "生成的文件名是:$file_name"
```
在上面的示例中,拼接了日期字段到文件名字符串中,生成的文件名格式为log_YYYY-MM-DD.txt。
shell正则匹配yyyy-mm-dd
你可以使用以下正则表达式来匹配 yyyy-mm-dd 格式的日期:
```shell
^[0-9]{4}-[0-9]{2}-[0-9]{2}$
```
这个正则表达式的含义是:以 4 位数字开头,后跟一个连字符,然后是 2 位数字,再后跟一个连字符,最后是 2 位数字。这样就可以匹配到 yyyy-mm-dd 格式的日期。记得在使用时进行适当的转义。