“if”语句中的正则表达式和通配符

“if”语句中的正则表达式和通配符

我在if语句中使用正则表达式和通配符。

例子:

  [[ "$exitfn" =~ ^[yY]*$ ]] && return
  [[ "$exitfn" == "[yY]*" ]] && return
  [[ "$exitfn" == "*$fs*" ]] && return
  [[ "$exitfn" == *$fs* ]] && return

但真的很想知道如果我引用*$fs*"或不引用会带来什么困难*$fs*

还想知道如何使用=~against ==

答案1

的右侧==!=内部[[...]]全局模式--==并且!=不是字符串相等运算符,它们是模式匹配运营商。

在正则表达式或全局模式中,任何引用的部分都被视为文字文本。

[[ "$exitfn" =~ ^[yY]*$ ]] && return
  • 这按预期工作
[[ "$exitfn" == "[yY]*" ]] && return
  • 仅当变量是文字时才返回[yY]*
[[ "$exitfn" == "*$fs*" ]] && return
  • 仅当变量包含星号后跟$fs星号的内容时才返回
[[ "$exitfn" == *$fs* ]] && return
  • 这应该按预期工作除非的扩展$fs可以匹配为 glob 表达式。
    • 例如: if then return 如果包含至少 3 个字符,fs='???'则执行 return 。$exitfn

太长了;博士- 你要

  [[ "$exitfn" == *"$fs"* ]] && return

相关内容