What is the operator =~
called? Is it only used to compare the right side against the left side?
Why are double square brackets required when running a test?
ie. [[ $phrase =~ $keyword ]]
Thank you
What is the operator =~
called? Is it only used to compare the right side against the left side?
Why are double square brackets required when running a test?
ie. [[ $phrase =~ $keyword ]]
Thank you
The
=~
operator is a regular expression match operator. This operator is inspired by Perl's use of the same operator for regular expression matching.The
[[ ]]
is treated specially by bash; consider that an augmented version of[ ]
construct:[ ]
is actually a shell built-in command, which, can actually be implemented as an external command. Look at your /usr/bin, there is most likely a program called "[" there! Strictly speaking,[ ]
is not part of bash syntax.[[ ]]
is a shell keyword, which means it is part of shell syntax. Inside this construct, some reserved characters change meaning. For example,( )
means parenthesis like other programming language (not launching a subshell to execute what's inside the paretheses). Another example is that<
and>
means less than and greater than, not shell redirection. This allow more "natural" appearance of logical expressions, but it can be confusing for novice bash programmers.Wirawan
I'm not sure it has a name. The bash documentation just calls it the
=~
operator.The right side is considered an extended regular expression. If the left side matches, the operator returns
0
, and1
otherwise.Because
=~
is an operator of the[[ expression ]]
compound command.