如何检查传递的日期是否在yyyymmdd格式而不是yyyyddmm?



我传递一个参数'bdate'与日期作为参数。如何在shell脚本中创建一个函数来检查传递的日期是否在yyyymmdd格式而不是在"yyyyddmm"?

有什么想法会很感激吗?

通常无法解决此问题,因为dd在01和12之间的yyyddmm在两种格式中都有效。这会给你一种虚假的安全感。

您可以像@49KWIC上面解释的那样使用date,或者如果您只想检测特定问题,您可以这样做:

yyyymmdd() {
case `echo "$1" | cut -b 5-6` in
01|02|03|04|05|06|07|08|09|10|11|12)
return 0;
;;
*)
return 1;
;;
esac
}
for d in 20220102 20220302 xxxx12xx 20221301 xxxxxxxx x
do
echo -n "$d ";
yyyymmdd "$d" && echo valid || echo invalid
done

,输出:

20220102 valid
20220302 valid
xxxx12xx valid
20221301 invalid
xxxxxxxx invalid
x invalid

最新更新