Skip to content

Files

Latest commit

 

History

History
33 lines (20 loc) · 953 Bytes

SC2003.md

File metadata and controls

33 lines (20 loc) · 953 Bytes

Pattern: Use of expr

Issue: -

Description

expr utility has a rather difficult syntax. In many cases, the arithmetic and string features provided as part of the shell command language are easier to use than their equivalents in expr. Newly written scripts should avoid expr in favor of the new features within the shell.

Example of incorrect code:

i=$(expr 1 + 2)
l=$(expr length "$var")

Example of correct code:

i=$((1+2))
l=${#var}

Exceptions

sh doesn't have a great replacement for the : operator (regex match). ShellCheck tries not to warn when using expr with :, but e.g. op=:; expr string "$op" regex will still trigger it.

Other than that, all uses of expr can be rewritten to use modern shell features instead.

Bash has [[ string =~ regex ]], so not even expr .. : .. is necessary.

Further Reading