我编写了这个小的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
它始终显示为"格式无效",我想知道这里的错误是什么以及如何继续。
答案 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)
。