首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相等的倾斜算子在bash 4中不起作用。

相等的倾斜算子在bash 4中不起作用。
EN

Stack Overflow用户
提问于 2016-06-02 18:26:34
回答 2查看 1K关注 0票数 5

在具有3的服务器中,我这样做:

代码语言:javascript
复制
bash3$ e="tar xfz"; [[ "$e" =~ "^tar" ]] && echo 0 || echo 1
0

但是当我在4中执行相同的命令时

代码语言:javascript
复制
bash4$ e="tar xfz"; [[ "$e" =~ "^tar" ]] && echo 0 || echo 1
1

我在CentOS、Fedora和Ubuntu上试了一下,得到了同样的结果。怎么啦?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-02 18:35:04

引用格雷格的Wiki中关于正则表达式的部分

在3.2之前,用引号包装regex模式是安全的,但这在3.2中发生了变化。从那时起,regex应该永远不被引用。

这是使用=~最兼容的方式。

代码语言:javascript
复制
e='tar xfz'
re='^tar'
[[ $e =~ $re ]] && echo 0 || echo 1

这应该适用于bash的两个版本。

票数 8
EN

Stack Overflow用户

发布于 2016-06-07 18:51:29

在这种情况下,您只想确保参数以tar开头,不需要正则表达式匹配,简单的模式匹配也可以:

代码语言:javascript
复制
e='tar xfz'
[[ $e == tar* ]] && echo 0 || echo 1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37599519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档