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?
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?
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.
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* ]]).