免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
1
摩羯座
日期:2015-01-08 14:01:55
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 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
2 [报告]
发表于 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
3 [报告]
发表于 2009-04-21 22:20 |只看该作者
谢谢楼上的朋友。
[[ $var1 =~ $var2 ]]结构支持正则的……

论坛徽章:
0
4 [报告]
发表于 2009-04-21 22:25 |只看该作者
2楼的正则拿到=~后面就行了,用^和$指定边界即可。

论坛徽章:
0
5 [报告]
发表于 2009-04-21 22:26 |只看该作者

回复 #2 ywlscpl 的帖子

[[ ]] 支持

论坛徽章:
0
6 [报告]
发表于 2009-04-21 22:26 |只看该作者

回复 #3 可恶的 的帖子

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

论坛徽章:
0
7 [报告]
发表于 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
8 [报告]
发表于 2009-04-21 22:30 |只看该作者
原帖由 ywlscpl 于 2009-4-21 22:26 发表
if [[ "$num" =~ ^[0-9]+$ ]] 可以吗?
或者if [[ "$num" =~ '^[0-9]+$' ]]  ?
现在没环境没法测试

可以。

论坛徽章:
0
9 [报告]
发表于 2009-04-21 22:32 |只看该作者
多谢楼上各位,又学到一个知识点

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP