Skip to content
Joachim Ansorg edited this page Nov 15, 2021 · 8 revisions

In POSIX sh, =~ regex matching is undefined.

Problematic code:

[ "$var" =~ .*foo[0-9]* ]

Correct code:

expr "$var" : ".*foo[0-9]*" > /dev/null

Rationale:

You are using =~ in a script declared to be compatible with POSIX sh or Dash.

=~ is not a POSIX operator and is unlikely to outside [[ ]] in Bash and Ksh.

Use expr's : operator instead.

Exceptions:

None

Related resources:

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!

Clone this wiki locally

⌂ 换网址