SC2323 – ShellCheck Wiki

See this page on GitHub


a[(x)] is the same as a[x]. Prefer not wrapping in additional parentheses.

Similarly $(( (x) )) is the same as $(( x )), (( (x) )) is the same as (( x )).

Problematic code:

echo $(( (x+1) ))

Correct code:

echo $((x+1))


ShellCheck found an entire arithmetic expression wrapped in parentheses. This does not serve a purpose since the expression is already clearly delimited by the construct it's in, such as array[..]= or $((..)) in the example.

Note: ShellCheck does not warn about redundant parentheses in subexpressions, such as (a*b)+c. Feel free to use parentheses to clarify the order of operations any way you'd like. ShellCheck only emits this suggestion when the entire expression is wrapped twice.


If you prefer having an extra layer of parentheses for stylistic reasons, you can ignore this message.

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