2 SC2322
Joachim Ansorg edited this page 2022-10-31 15:27:54 +01:00

In arithmetic contexts, ((x)) is the same as (x). Prefer only one layer of parentheses.

Problematic code:

value=$(( ((offset + index)) * 512 )) 

Correct code:

value=$(( (offset + index) * 512 ))

Rationale:

ShellCheck found doubly nested parentheses in an arithmetic expression. While the syntax for an arithmetic expansion is $((..)), this does not imply that parentheses in the expression should also be doubled. (x), ((x)), and (((x))) are all identical, so you might as well use only one layer of parentheses.

Exceptions:

This is a stylistic suggestion. If you prefer keeping both parentheses, you can ignore this message.

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