7

Given a string and a hash returned by openssl, why using == doesn't match them correctly but =~ does?

Background question: How can I force a script to use more resources?

1 Answer 1

11

The binary operator, ‘=~’, has the same precedence as ‘==’ and ‘!=’. When it is used, the string to the right of the operator is considered an extended regular expression and matched accordingly (as in regex3)). The return value is 0 if the string matches the pattern, and 1 otherwise. If the regular expression is syntactically incorrect, the conditional expression’s return value is 2.

From: bash

Hence your comparing for equality versus for a regular expression match.

1
  • 5
    (and beware that means substring match. The b regular expression is matched in abc, so [[ abc =~ b ]] is true, while for the fnmatch pattern matching operator ([[ abc == b ]]), it's not. The equivalent of [[ abc =~ b ]] is [[ abc == *b* ]]). Commented Mar 13, 2014 at 11:51

You must log in to answer this question.