1 SC1076
Vidar Holen edited this page 2022-10-19 20:48:37 -07:00

Trying to do math? Use e.g. [ $((i/2+7)) -ge 18 ].

Problematic code:

[ i / 2 + 7 -ge 18 ]

Correct code:

[ $((i / 2 + 7)) -ge 18 ]

Rationale:

ShellCheck found a loose +*/% in a test statement. This usually happens when trying to do arithmetic in a condition, but without using the arithmetic expansion construct $((expression)).

In C, if (a+b == c) is perfectly fine, but in sh this must be written to first expand the arithmetic operation like if [ $((a+b)) = c ].

Exceptions:

None.

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