SC2305 – ShellCheck Wiki

See this page on GitHub


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

Problematic code:

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

Correct code:

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


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.



ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.