我在下面的简单日期验证中遇到了一个奇怪的问题。 它在某些日期未通过验证。 一个例子是:20140717
其他日期通过验证确定吗?即:20140727
validate_date()
{
typeset my_date=$1
if [[ $my_date = [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ]] ; then
return 0;
else
return 1
fi
}
有人可以在ksh上运行它,看看是否会发生同样的情况吗?
答案 0 :(得分:3)
我无法理解为什么代码会为您的输入提供不正确的结果。
我认为验证日期的更好方法之一是使用date -d "datestring"
如果成功则返回字符串显示的时间,并在日期验证失败时返回错误
所以在date -d "datestring"
之后..你可以检查$的值吗?所以要知道验证的成功与否。
例如
ajay@pavilion:~$ date -d 20140730
Wed Jul 30 00:00:00 IST 2014
ajay@pavilion:~$ echo $?
0
ajay@pavilion:~$ date -d 20140750
date: invalid date ‘20140750’
ajay@pavilion:~$ echo $?
1
ajay@pavilion:~$