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/