免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 8498 | 回复: 31
打印 上一主题 下一主题

如何判断输入格式是否正确? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-19 14:36 |只看该作者 |倒序浏览
Hi,大侠们

    小弟现有个困难,急需得到大侠们的帮助。谢谢!
  
   问题:
   我使用read end_date去接收一个日期而且格式为(YYYY-MM-DD HH24:MI:SS  eg:2008-9-12 17:20:10).
    用程序如何去判断end_date接收到的值满足上面的格式?如果格式不满足要求就提示重新输入。


  BR,

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
2 [报告]
发表于 2008-12-19 14:39 |只看该作者
关注中。。

论坛徽章:
0
3 [报告]
发表于 2008-12-19 14:43 |只看该作者
echo $end_date |awk -F"[- :]" '!($1>0 && $1<10000 && $2>0 && $2<13 && $3 >0 && $3<32 && $4>=0 && $4<25 && $5>=0 &&$5<60 && $6>=0 && $6<60) {print "error"}'



这个没有考虑大小月及闰月

这个最好还是写个shell脚本来判断吧

[ 本帖最后由 welcome008 于 2008-12-19 14:44 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-12-19 14:50 |只看该作者
原帖由 welcome008 于 2008-12-19 14:43 发表
echo $end_date |awk -F"[- :]" '!($1>0 && $10 && $20 && $3=0 && $4=0 &&$5=0 && $6



Hi,welcome008

      我不晓得如何用shell去写这个判断脚本,还希望“welcome008”给予帮助。

    谢谢!

论坛徽章:
0
5 [报告]
发表于 2008-12-19 15:01 |只看该作者
如果date支持-d参数的话:
while read a
do
date -d "$a"
[$? -eq 0]&&exit
done

这个脚本有问题,请看九楼。

[ 本帖最后由 walkerxk 于 2008-12-19 18:39 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-12-19 15:03 |只看该作者
[root@zzylinux root]# date -d "1"
Fri Dec 19 01:00:00 CST 2008
[root@zzylinux root]# echo $?
0
[root@zzylinux root]# date
Fri Dec 19 15:01:12 CST 2008

论坛徽章:
0
7 [报告]
发表于 2008-12-19 15:18 |只看该作者
原帖由 walkerxk 于 2008-12-19 15:01 发表
如果date支持-d参数的话:
while read a
do
date -d "$a"
[$? -eq 0]&&exit
done



Hi,walkerxk

    但是我系统的日期格式跟我定义变量的格式不一样。我该如何做呢?

  谢谢!

论坛徽章:
0
8 [报告]
发表于 2008-12-19 15:18 |只看该作者
原帖由 leo_pro 于 2008-12-19 14:50 发表



Hi,welcome008

      我不晓得如何用shell去写这个判断脚本,还希望“welcome008”给予帮助。

    谢谢!


你是什么系统,什么shell啊?

论坛徽章:
0
9 [报告]
发表于 2008-12-19 15:19 |只看该作者
谢谢提醒,头晕
while read a
do
[[ "$a" =~ [0-9]{4}-[0-9]{1,2}-[0-9]{1,2}\ [0-9]{2}:[0-9]{2}:[0-9]{2} ]]&&exit
done
如果还要严格的话自己改正则吧,正则就是用来match的。

论坛徽章:
0
10 [报告]
发表于 2008-12-19 15:20 |只看该作者
原帖由 leo_pro 于 2008-12-19 15:18 发表



Hi,walkerxk

    但是我系统的日期格式跟我定义变量的格式不一样。我该如何做呢?

  谢谢!

这个和系统时间格式没关系,那个有问题,看我9楼的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP