bash中的Not Equal Tilde

时间:2014-05-26 11:17:14

标签: bash shell equals tilde

如标题中所示, "=~" 运营商相反是什么? 我真的用Google搜索,我只为以下解决方案提供资金:[[ ! $str1 =~ $str2 ]] 是否有任何运算符验证"=~" 运算符相反

感谢。

2 个答案:

答案 0 :(得分:10)

版本4.3中没有反对操作符(本帖时的当前版本)。

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

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

答案 1 :(得分:2)

答案是在bash中没有这样的运算符如果您不想使用已知的{{},那么 !~ 就像在perl中那样1}}出于此目的,您必须使用( [[ ! $str1 =~ $str2 ]] )grep。类似的东西:

perl

但是我没有理由错过bash x="I like negation" y="like" if [[ $(perl -ne "!/$y/ && print" <(echo $x)) == "$x" ]]; then echo "Contains" else echo "Doesn't contain" 因为!~很好地解决了目的。可能是因为它不存在于bash中。

考虑DevSolar对此答案的第一条评论,当您与[[ ! $str1 =~ $str2 ]]grep一起使用时,它会保留,这再次使perl成为可用的最佳答案。