1

我并不是说这个问题只针对 UNIX,而是我在 Solaris 上工作,我没有在任何其他操作系统上尝试过。我在扩展的正则表达式之间感到困惑:

第一的:

[[ "str" == ?(str|STR) ]] && echo "matched"

这项工作是正确的,但是当:

[[ "str str" == ?(str|STR)(.*) ]] && echo "matched"

它不起作用,是不是意味着我只能比较一种模式。

第二:

[[ "str" =~ ?(str|STR) ]] && echo "matched"

我不能在这里使用这个表格,为什么?,但是当:

[[ "str" == (str|STR)? ]] && echo "matched"

它工作正常。

4

1 回答 1

2

看起来您正在尝试将 扩展的 glob扩展的正则表达式结合起来。我会说这是一件坏事。

$ set '(str|STR)'

$ [[ 'str' =~ $1 ]] && echo matches
matches

$ [[ 'str str' =~ $1 ]] && echo matches
matches
于 2013-04-14T14:38:15.457 回答