Hi, This was noticed in a comment to a github issue. Just forwarding it along.
$ for ((; 1>(1) ;)); do break; done -bash: syntax error near unexpected token `newline' $ echo "$BASH_VERSION" 4.3.33(1)-release https://github.com/koalaman/shellcheck/issues/255#issuecomment-88452555 ---------- Forwarded message ---------- From: Dan Douglas <orm...@gmail.com> Date: Wed, Apr 1, 2015 at 12:15 PM Subject: Re: [shellcheck] Bash arithmetic expansion diagnostics (#255) To: koalaman/shellcheck <reply+0003e7c2a607770e1564420080ff167a99c7ac0c55c501de92cf000000011133a16592a169ce02dfd...@reply.github.com> On Wed, Apr 1, 2015 at 7:07 AM, brother <notificati...@github.com> wrote: > > I walked straight into one of these. It looks like something might have > changed in bash on top of everything else because it was not new code that > exploded in my face, but I have indeed a new bash version on this machine > since last time I tried it. > > brother ~$ cat /tmp/test.sh > #!/bin/bash > > slots=14 > > unset slotaddr > for ((i=0x82 ; i<((0x82+(slots*2))) ; i=i+2 )); do > slotaddr+=($i) > done > > echo "${slotaddr[@]}" > brother ~$ shellcheck /tmp/test.sh > brother ~$ /tmp/test.sh > /tmp/test.sh: command substitution: line 9: syntax error near unexpected > token `slots*2' > /tmp/test.sh: command substitution: line 9: `(0x82+(slots*2))) ; i=i+2 ' > /tmp/test.sh: line 6: syntax error: arithmetic expression required > /tmp/test.sh: line 6: syntax error: `((i=0x82 ; i<((0x82+(slots*2))) ; i=i+2 > ))' > > on bash 4.3.30(1)-release That's a bug. There were some changes to the way C-for was parsed during 4.2. Or it's possibly related to when process substitution was removed from certain arithmetic contexts during that time.