Skip to content
Joachim Ansorg edited this page Oct 31, 2022 · 2 revisions

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.

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