shell编程中if [[ ! ${a} =~ ^[0-9]+ ]]条件判断式如何工作的?
我只知道这个好像是如果变量a不是以数字开头就执行if语句,但是特别的:=~是什么意思?^[0-9]+ 是什么意思?另外这个判断使用的是扩展正则表达式?
你需要先了解 [[..]] 和 [..] 的区别,有一篇 wiki 可以参考 http://mywiki.wooledge.org/BashFAQ/031
简单说 [[..]] 和 [..] 都是 bash test 的命令,里面可以是一些表达式,但是前者比后者功能更加多,也更不容易出错。比如你提到的问题,=~ 就是一个扩展的 test 表达式,它的作用是 “RegularExpression matching”,=~ 前面的是字符串,后面是正则表达式。这个 if 判断的意思就是判断变量 a 不是数字开头。
=~意思是匹配后面的正则式,^是匹配开头,[0-9]意思是匹配0-9的字符也就是数字,+是指匹配不少于一次,也就是有不少于一个数字
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。