Oops, sorry, that converts all of a to a scalar b so ${b[0]} gives "x
y z" and ${b[1]} gives nothing.
On Thu, Jul 29, 2010 at 7:16 PM, Dennis Williamson
wrote:
> To make your example work try:
>
> $ b=a[*]
>
> or
>
> $ b...@]
>
> Otherwise, your indirection is telling b to look at a as a scalar.
To make your example work try:
$ b=a[*]
or
$ b...@]
Otherwise, your indirection is telling b to look at a as a scalar.
This would give the same result:
$ echo $a
x
On Thu, Jul 29, 2010 at 3:55 PM, Bernd Eggink wrote:
> It seems that indirect expansion doesn't work with arrays:
>
> $ a=(x y z
It seems that indirect expansion doesn't work with arrays:
$ a=(x y z)
$ b=a
$ echo "${!b[0]} ${!b[1]} ${!b[2]}"
x
Is that intended? The documentation isn't explicit about it.
IMHO it would be very desirable to have a indirect expansion facility
for arrays. Otherwise there is only a choice bet
History expansion is performed before variable expansion.
>From man bash:
History expansion is performed immediately after a complete line
is read, before the shell breaks it into words.
and
! Start a history substitution, except when ***followed by a
blank***, newline, carriage
Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='x86_64'
-DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='x86_64-pc-linux-gnu'
-DCONF_VENDOR='pc' -DLOCALEDIR='/usr/share/locale' -DPACKA