Skip to content
Vidar Holen edited this page Aug 23, 2021 · 1 revision

Quote regex argument to expr to avoid it expanding as a glob.

Problematic code:

expr "$input" : [0-9]*

Correct code:

expr "$input" : "[0-9]*"

Rationale:

ShellCheck found an expr command using : to match a regex, but the regex is not quoted and therefore being treated as a glob.

This means that if the problematic code is ever executed in a directory containing a file matching [0-9]*, such as 2021-reports or 12 Angry Men [1957].mkv, it will be replaced be replaced and cause the command to error or incorrectly match.

The regex should be quoted to avoid this, like in the correct example.

Exceptions:

None

Related resources:

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

ShellCheck

Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally