Re: Is this a bug by any chance?

2019-10-07 Thread Greg Wooledge
On Mon, Oct 07, 2019 at 04:23:44PM +0200, Andreas Schwab wrote:
> On Okt 07 2019, Greg Wooledge  wrote:
> 
> > x=(1 2 3 4 5 -n '/*' 'hello world')
> > for z in "${x[@]}"; do
> >   printf %s "$z"
> > done
> > echo
> 
> (IFS=; printf '%s\n' "${x[*]}")

Or avoid the fork():

printf %s "${x[@]}"
echo

I preserved the original poster's loop, because it's probably
another !b9 question.



Re: Is this a bug by any chance?

2019-10-07 Thread Andreas Schwab
On Okt 07 2019, Greg Wooledge  wrote:

> x=(1 2 3 4 5 -n '/*' 'hello world')
> for z in "${x[@]}"; do
>   printf %s "$z"
> done
> echo

(IFS=; printf '%s\n' "${x[*]}")

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."



Re: Is this a bug by any chance?

2019-10-07 Thread Greg Wooledge
On Mon, Oct 07, 2019 at 08:05:12PM +0700, pepa65 wrote:
> > On Sat, Oct 05, 2019 at 06:48:35PM +, George R Goffe via Bug reports 
> > for the GNU Bourne Again SHell wrote:
> >> I was expecting to see:
> >> 12345
> > 
> > If you want to create a *list* and iterate over that list, one element
> > at a time, use arrays instead of string variables.
> > 
> > x=(1 2 3 4 5)
> > for z in "${x[@]}"; do
> >   echo "$z"
> > done
> 
> Just to be clear (as nobody has mentioned this) to get them all on the
> same line, you need "echo -n", and you can do this without using arrays:
> 
> x="1 2 3 4 5"
> for z in $x
> do echo -n "$z"
> done

This has some issues.  echo -n will fail if one of the list elements is
an option recognized by echo.  The unquoted $x expansion will fail if
one of the list elements is a glob that matches some files, or a glob
that matches no files if nullglob is active.

Also, the list-in-a-string gives you absolutely no way to handle list
elements that contain internal whitespace.  This is what arrays are for.
Please use the arrays.

x=(1 2 3 4 5 -n '/*' 'hello world')
for z in "${x[@]}"; do
  printf %s "$z"
done
echo



Re: the gdb does not displays tui properly

2019-10-07 Thread Greg Wooledge
On Sat, Oct 05, 2019 at 02:41:38PM +0530, Kartikey Tewari wrote:
> Description:
> I am using Microsoft Windows-10 -wsl ubuntu.
> when dubugging c++ codes having extension .cpp via gdb debugger, I observe
> that TUI does not get rendered properly.

GDB is not part of bash.  You need to submit your bug report to the
GDB project; see  for details.
(Or, it may turn out to be a bug in WSL, in which case you need to
submit it to Microsoft.)



Re: Is this a bug by any chance?

2019-10-07 Thread pepa65
> On Sat, Oct 05, 2019 at 06:48:35PM +, George R Goffe via Bug reports for 
> the GNU Bourne Again SHell wrote:
>> I was expecting to see:
>> 12345
> 
> If you want to create a *list* and iterate over that list, one element
> at a time, use arrays instead of string variables.
> 
> x=(1 2 3 4 5)
> for z in "${x[@]}"; do
>   echo "$z"
> done

Just to be clear (as nobody has mentioned this) to get them all on the
same line, you need "echo -n", and you can do this without using arrays:

x="1 2 3 4 5"
for z in $x
do echo -n "$z"
done

Cheers,
Peter






Re: Is this a bug by any chance?

2019-10-07 Thread Greg Wooledge
On Sat, Oct 05, 2019 at 06:48:35PM +, George R Goffe via Bug reports for 
the GNU Bourne Again SHell wrote:
> I was expecting to see:
> 12345

> #!./bash -xv
>  x="1 2 3 4 5"
>  for z in "$x"
>     do
>    echo "$z"
>     done
>  exit 0

Not a bug.  You've created a string of length 9 characters, and
you've told bash to iterate once, using this string as the contents of
variable z.

If you want to create a *list* and iterate over that list, one element
at a time, use arrays instead of string variables.

x=(1 2 3 4 5)
for z in "${x[@]}"; do
  echo "$z"
done

See  and
.