【发布时间】:2021-10-04 03:25:49
【问题描述】:
所以,我无法通过以下代码中的时间格式检查:
#!/usr/bin/env bash
#
date="$1"
time="$2"
if [[ $date =~ ^(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$ ]]; then
if [[ $time =~ ^(0[1-9]|1[0-2]):([0-5][0-9]):([0-5][0-9])\s([AaPp][Mm])$ ]]; then
echo "Input Matched!"
else
echo "Invalid time! Use <HH:MM:SS AM/PM> format!"
exit 1
fi
else
echo "Invalid date! Use <MMDD> format!"
exit 1
fi
我已经尝试了很多时间检查的变体,但没有任何效果。我认为问题在于空间检查。我已经尝试过“[[:space]]”和“[[:blank]]”,但没有奏效。请帮忙。
另外,我已经研究到死了。我已经尝试了很多搜索,但我一无所获。如果有人确实找到了可以解决我的问题的问题,您能告诉我您使用的搜索吗?
【问题讨论】:
-
为什么不使用“date -d
”命令而不是编写脚本呢? date 命令可以读取多种格式的数据,例如:date -d "20/05 23:59", date -d "next tuesday", date -d "yesterday"。 -
@Saboteur,我为什么不使用“日期”?因为我没那么聪明:)。