bash 中的不等波浪号

Posted

技术标签:

【中文标题】bash 中的不等波浪号【英文标题】:The Not Equal Tilde in bash 【发布时间】:2014-07-15 03:40:35 【问题描述】:

如标题所示, "=~" operator相反是什么? 我真的在谷歌上搜索过,我只资助了以下解决方案:[[ ! $str1 =~ $str2 ]] 有没有运营商验证"=~"operator相反

谢谢。

【问题讨论】:

为什么需要它? ! (X =~ Y) 还不够吗? 如果操作员准备好退出,我为什么要使用它? @Rhymoid 不,我的意思是! X >= Y :) @user2799037 这就是问题所在,我不是唯一一个使用我的代码的人,我必须最大限度地优化...... @user3629514:对于正则表达式,拥有一个专用的非匹配运算符不会优化任何东西。 【参考方案1】:

在 4.3 版之前的 bash 中没有对立的运算符(在本文发布时为当前版本)。

[[ ! str1 =~ str2 ]] 是要走的路。

对于此类问题,您应该使用man 而不是您最喜欢的搜索引擎。所涉及工具的手册页——在这种情况下是 bash——是权威的,“网络是传闻”(当然,除非它引导您进入手册页 ;-))。

【讨论】:

【参考方案2】:

答案是 no such Operator in bash 如果您不想使用已知的 ( [[ ! $str1 =~ $str2 ]] )目的然后你必须使用 grepperl 。比如:

x="I like negation"
y="like"


if [[ $(perl -ne "!/$y/ && print" <(echo $x)) == "$x" ]]; then 
echo "Contains"
else
echo "Doesn't contain"

但是我找不到任何理由在 bash 中错过 !~,因为 [[ ! $str1 =~ $str2 ]] 很好地解决了这个目的。可能是它不在 bash 中的原因。

考虑 DevSolar 对此答案的第一条评论,当您选择 grepperl 时,它仍然成立,这再次使 [[ ! $str1 =~ $str2 ]] 成为最好的。

【讨论】:

嗯...调用外部进程几乎没有改进,无论是性能还是可读性。

以上是关于bash 中的不等波浪号的主要内容,如果未能解决你的问题,请参考以下文章

有没有在bash中用波浪号替换主目录的好方法?

选择输入类型号中的所有输入值

ReactJs 防止输入类型号中的 e 和 dot

波浪线(波浪线)(即“~”运算符在 Python 中的作用是啥? [复制]

微信公众号中的支付宝支付与微信支付

宏中的波浪号 (~) 是啥意思?