运营商=~叫什么?它仅用于比较右侧和左侧吗?
为什么运行测试时需要双方括号?
IE。[[ $phrase =~ $keyword ]]
谢谢
运营商
=~叫什么?
我不确定它有名字。bash 文档只是将其称为=~运算符。
它仅用于比较右侧和左侧吗?
右侧被认为是扩展的正则表达式。如果左侧匹配,则运算符返回0,1否则返回。
为什么运行测试时需要双方括号?
因为=~是[[ expression ]]复合命令的运算符。
该=~运算符是正则表达式匹配运算符。这个运算符的灵感来自 Perl 使用相同的运算符进行正则表达式匹配。
被[[ ]]bash 特殊处理;考虑一个增强版本的[ ]构造:
[ ]实际上是一个shell内置命令,它实际上可以作为一个外部命令来实现。看看你的/usr/bin,那里很可能有一个名为“[”的程序!严格来说,[ ]不是 bash 语法的一部分。
[[ ]]是一个 shell 关键字,这意味着它是 shell 语法的一部分。在这个结构中,一些保留字符改变了含义。例如,( )像其他编程语言一样表示括号(不启动子shell来执行括号内的内容)。另一个例子是<and>表示小于和大于,而不是 shell 重定向。这允许逻辑表达式更“自然”的外观,但对于新手 bash 程序员来说可能会感到困惑。
威拉万
该=~运算符是模式匹配运算符。它在原始 Bourne shell 中不存在,whentest或 internal[ ]用于条件句。
该let命令或在[[ ]]内部具有比 更多的功能test,包括模式匹配功能。这就是为什么在使用时必须使用[[ ]],而不是。[ ]=~