On 5/29/20 4:00 PM, Luiz Angelo Daros de Luca wrote:
> Hello,
> 
> While using test -v, I noticed that it returns false when I use it
> with a sparse or empty array. I need to add [@] or [index] to have it
> return true.
> 
> Is this expected? If so, it is not documented. It only has:
> 
> "True if the shell variable varname is set (has been assigned a value)."
> 
> I'm using GNU bash, version 5.0.16(1)-release (x86_64-pc-linux-gnu)
> 
> $ A=()
> $ test -v A || echo not defined
> not defined
> 
> Should it?

Referring to an array without a subscript is equivalent to referencing
element 0.

> 
> $ A=(x)
> $ test -v A || echo not defined
> 
> OK

This sets A[0]=x

> 
> $ A=()
> $ A[1]=1
> $ test -v A || echo not defined
> not defined
> 
> Should it? 'test -v A' is equivalent to 'test -v A[0]'

Exactly.

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    c...@case.edu    http://tiswww.cwru.edu/~chet/

Reply via email to