Unix日期格式验证

时间:2015-06-20 17:21:03

标签: shell date unix unix-timestamp

我编写了这个小的Unix shell脚本来验证日期格式。我的脚本应检查字符串是否为YYYYMMDDHHMMSS格式。如果不是这种格式,则应发送错误消息。

例如,我声明了一个变量a并为其分配了一个值。

a=20150620223405
date "+%Y%m%d%H%M%S" -d $a > /dev/null 2>&1
if [ $? -ne 0 ]
then
  echo "Invalid format"
else
  echo "Valid format"
fi 

它始终显示为"格式无效",我想知道这里的错误是什么以及如何继续。

1 个答案:

答案 0 :(得分:0)

来自man date

  

DATE STRING

     

--date = STRING是一个大多数免费格式的人类可读日期   串          例如" Sun,2004年2月29日16:21:42 -0800"或" 2004-02-29 16:21:42"要么          甚至"下周四"。日期字符串可能包含指示cal-的项目          结束日期,时间,时区,星期几,相对时间,相关          生日期和数字。空字符串表示该字符串的开头          天。日期字符串格式比容易记录的更复杂          这里,但在信息文档中有详细描述。

关于格式:

  

FORMAT控制输出。

这意味着您无法验证作为参数传递的日期。无论你提供什么格式,date都会自行验证它(正如人说FORMAT控制输出而不是输入)。

要验证日期,我建议您使用正则表达式和grep (1)