On 2/24/16 9:13 AM, g.branden.robin...@gmail.com wrote:

> Bash Version: 4.3
> Patch Level: 30
> Release Status: release
> 
> Description:
>       I get a [[ ]] test failure with no error diagnostic, tricking me
>       into thinking the test legitimately failed when the culprit was
>       really a bad regex.
> 
> Repeat-By:
>       Constrast:
> 
>       $ [[ foo =~ ) ]] && echo match || echo no match
>       bash: syntax error in conditional expression: unexpected token `)'
>       bash: syntax error near `)'

This is a legitimate syntax error. `)' is an unquoted shell metacharacter
appearing in a place where that operator is invalid.


>       $ REGEX=')'
>       $ $ [[ foo =~ $REGEX ]] && echo match || echo no match
>       no match

This parses successfully and gets passed to the system's C library regexp
function.  Bash doesn't perform validity checks on regexp patterns, and
there's no reason it should.

Chet


-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU    c...@case.edu    http://cnswww.cns.cwru.edu/~chet/

Reply via email to