我不是仅仅针对UNIX的这个问题,而是我在Solaris上工作,而我没有在任何其他操作系统上尝试过。 我在扩展正则表达式之间感到困惑:
第一
[[ "str" == ?(str|STR) ]] && echo "matched"
这项工作是正确的,但是:
[[ "str str" == ?(str|STR)(.*) ]] && echo "matched"
它不起作用,是否意味着我只能比较一种模式。
第二
[[ "str" =~ ?(str|STR) ]] && echo "matched"
我不能在这里使用这个表格为什么?,但是在:
[[ "str" == (str|STR)? ]] && echo "matched"
它可以正常工作。
答案 0 :(得分:2)
看起来你正试图结合起来 extended globs 同 extended regular expressions。我会说这是一件坏事。
$ set '(str|STR)'
$ [[ 'str' =~ $1 ]] && echo matches
matches
$ [[ 'str str' =~ $1 ]] && echo matches
matches