我可以将哪些 RE 与 =~ 运算符一起使用

我可以将哪些 RE 与 =~ 运算符一起使用

手册页bash关于运营商有这样的说法=~

还可以使用附加二元运算符 =~,其优先级与 == 和 != 相同。使用时,运算符右侧的字符串被视为扩展正则表达式并进行相应的匹配(如正则表达式(3)

然而,我发现即使是微不足道的 RE 似乎也不起作用。这是我的用例示例:

n='hello'
[[ "$n" =~ 'llo' ]] && echo yes || echo no   # <-- yes
[[ "$n" =~ 'llo$' ]] && echo yes || echo no  # <-- no

鉴于这$是 EOL 的标准 RE 指标,为什么第二次比较返回“否”?

答案1

你没有仔细阅读man page,它还说:

模式的任何部分都可以被引用,以强制引用的部分作为字符串进行匹配。

因此,$字符串中的 意味着字面上的美元符号而不是字符串结尾。从字符串中移动$使其工作:

$ [[ "$n" =~ 'llo'$ ]] && echo yes || echo no
yes

相关内容