shell中 =~ 与 == 的区别:
之前对shell的学习只停留在理论,很多点都是一扫而过,没有思考其他的可能性,这样会错过很多的知识。接下来分享的是=~的用法。
问题描述
在看脚本的时候发现了$version =~ $new_version
,其中=~不熟悉,于是就去搜索了一下:
正则匹配,用来判断其左侧的参数是否符合右边的要求,如果匹配则为真,不匹配则为假。
如果匹配就输出1,不匹配就输出0(描述存在歧义)。
于是产生了=~与==的联想,开始了实践,获得了一些结果:
[[7.6 =~ 7.6.* ]]
echo $?
#输出0
[[7.6 == 7.6.* ]]
echo $?
#输出1
[[7.6 =~ 7.6 ]]
echo $?
#输出0
[[7.6 == 7.6 ]]
echo $?
#输出0
#输出0:error为0
#输出1:error为1
(echo $?
为返回上一行命令输出)
结论:
=~支持正则表达式,同时支持变量比较相等。==只能支持比较变量相不相等。
可知:如果需要做两个变量的包含关系,可以使用=~匹配