On Wed, Jun 23, 2010 at 03:27:28PM -0500, Peng Yu wrote:
> #for i in {0..${#parameter}};

This doesn't work.  The parser does things in a very specific order.
Brace expansion is done before parameter expansion.  The parser sees
0..$ and that isn't a legitimate brace expansion range, so it doesn't
perform the expansion; it leaves it alone.  Then the parameter expansion
occurs, and the ${#parameter} is replaced.

If you REALLY MUST use brace expansion, you'll have to wrap the whole
thing in eval.  I'd recommend using a for loop instead:

  for ((i=0; i<=${#parameter}; i++))

Or if you require (or simply want) the ${#parameter} part to be evaluated
only one time:

  n=${#parameter}
  for ((i=0; i<=n; i++))

Reply via email to