-
Notifications
You must be signed in to change notification settings - Fork 1.8k
SC1102
koalaman edited this page Feb 7, 2016
·
4 revisions
echo "$((( n > 0)) && mycommand --flags)"
echo "$( (( n > 0)) && mycommand --flags)"
You are using $(((
(or (((
) to mean $( ((
: command expansion with an arithmetic command. The more common interpretation is $(( (
: arithmetic expansion with parentheses.
This is an ill-defined structure that is parsed differently between different shells and shell versions. Prefer adding a space to make it unambiguous, both to shells and humans.
Consider the $(((
in $(((1)) )
:
Ash, dash and Bash 1 parses it as $(( (
and subsequently fail to find the matching ))
. Zsh and Bash 2+ looks ahead and parses it as $( ((
. Ksh parses it as $( ( (
.
None.