GNU bash, version 4.3.46(1)-release (x86_64-unknown-linux-gnu)
GCC: (GNU) 6.1.1
On archlinux 4.4.27-1-lts

Hello, today i tried something simple but it leads to what seems to be a
bug.

$ var="$(for ((i=0;i<$#;i++));do echo line;done)"
leads to: "unexpected EOF while looking for matching `)'

I think it's because bash interprets "^#" as "#" which means that what
follow is commented.

It works, when $# is replaced by any number:
$ var="$(for ((i=0;i<5;i++));do echo line;done)"

It works with backticks:
$ var=`for ((i=0;i<$#;i++));do echo line;done`

This works also:
$ var="$(bash -c 'for ((i=0;i<$#;i++));do echo line; done')"

As well than this one:
$ var="$(for ((i=0;i<${#};i++));do echo line;done)"

Than this one:
$ var="$(for ((i=0;i<"$#";i++));do echo line;done)"


IRC #bash on freenode

02/12/2016 11:13:19 <Soliton> then i guess the math context is not parsed
correctly. that seems odd.

02/12/2016 11:27:57 <mvdw> If you reassign $# to a different variable
beforehand it works as well.

02/12/2016 11:36:42 <Soliton> looks to me like a parser failure that reads
it as a comment start.
<Soliton> doesn't matter what you write after it. it always misses the
closing parenthesis.

parasite.

Reply via email to