免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 29437 | 回复: 21

关于if [[ ]]语句中的正则表达式 [复制链接]

论坛徽章:
1
摩羯座
日期:2015-01-08 14:01:55
发表于 2009-04-21 21:48 |显示全部楼层
在if [[ ]]语句中,可以使用if [[ $var1 =~ $var2 ]]来使用正则表达式。
问题是,这样一来,只要$var1中含有$var2的一部分就可以匹配了,该如何使得完全符合才匹配呢?
表达能力还是一如既往地不好,直接上例子。
比如说,我要确认变量num只能为数字,该如何匹配?

if [[ "$num" =~ [0-9]+ ]]
这样的话,只要$num中含有数字,就能匹配,如何才能确认只有数字呢?

我现在只想到2个方法确认$num为纯数字,如下:
if [[ "$num" != *[!0-9]* ]]

if [[ -z $(echo $num|sed 's/[0-9]//g') ]]

想知道使用if [[ ]]语句中正则匹配纯数字的方法,谢谢!

论坛徽章:
0
发表于 2009-04-21 22:11 |显示全部楼层
test不直接支持正则吧,借助可以用正则的工具
if [ ! -z $(echo $num|awk '$0~/^[0-9]+$/') ]

[ 本帖最后由 ywlscpl 于 2009-4-21 22:14 编辑 ]

论坛徽章:
1
摩羯座
日期:2015-01-08 14:01:55
发表于 2009-04-21 22:20 |显示全部楼层
谢谢楼上的朋友。
[[ $var1 =~ $var2 ]]结构支持正则的……

论坛徽章:
0
发表于 2009-04-21 22:25 |显示全部楼层
2楼的正则拿到=~后面就行了,用^和$指定边界即可。

论坛徽章:
0
发表于 2009-04-21 22:26 |显示全部楼层

回复 #2 ywlscpl 的帖子

[[ ]] 支持

论坛徽章:
0
发表于 2009-04-21 22:26 |显示全部楼层

回复 #3 可恶的 的帖子

if [[ "$num" =~ ^[0-9]+$ ]] 可以吗?
或者if [[ "$num" =~ '^[0-9]+$' ]]  ?
现在没环境没法测试

论坛徽章:
0
发表于 2009-04-21 22:28 |显示全部楼层
原帖由 ywlscpl 于 2009-4-21 22:26 发表
if [[ "$num" =~ ^[0-9]+$ ]] 可以吗?
或者if [[ "$num" =~ '^[0-9]+$' ]]  ?
现在没环境没法测试

可以的。

  1. [root@bj_manager ~]# a=123a;if [[ $a =~ ^[0-9]+$ ]]; then echo ok; fi
  2. [root@bj_manager ~]# a=123;if [[ $a =~ ^[0-9]+$ ]]; then echo ok; fi   
  3. ok
  4. [root@bj_manager ~]#
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2009-04-21 22:30 |显示全部楼层
原帖由 ywlscpl 于 2009-4-21 22:26 发表
if [[ "$num" =~ ^[0-9]+$ ]] 可以吗?
或者if [[ "$num" =~ '^[0-9]+$' ]]  ?
现在没环境没法测试

可以。

论坛徽章:
0
发表于 2009-04-21 22:32 |显示全部楼层
多谢楼上各位,又学到一个知识点

论坛徽章:
1
摩羯座
日期:2015-01-08 14:01:55
发表于 2009-04-21 22:34 |显示全部楼层
谢谢大家了,我疏忽了边界^$,呵呵。
感觉[[ ]]结构更便利。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP