bash:将=〜与包含#的正则表达式一起使用

sco*_*eus 2 regex bash

好的,伙计们。我正在编写bash脚本,想将字符串与包含#使用=~运算符的正则表达式进行比较。

这是我到目前为止的内容:

if [[ ${line} =~ \s*\# ]]; then
     #do things
fi
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在尝试#使用a 来转义\,根据本文,这应该是可能的。但是,这确实让我感到困惑。我的语法突出显示工具仍在突出显示后面的文本#,好像它是注释一样。

我的语法荧光笔不正确吗?逃逸会#干扰正则表达式的解析吗?有什么办法可以使用引号来避免此问题?

anu*_*ava 5

你可以做:

re='\s*#'

if [[ $line =~ $re ]]; then
     #do things
fi
Run Code Online (Sandbox Code Playgroud)

  • 带引号的文本在`=〜`运算符的RHS上不起作用,但是可以如上所示使用变量。 (2认同)
  • (此外,您可以在RHS上引用* some *文本,但不是要用作元字符的任何字符。`[[foo =〜“ fo *”]]`不会成功,但是`[[foo =〜“ fo“ *]]`将符合预期。) (2认同)