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? $ A=(x) $ test -v A || echo not defined OK $ A=() $ A[1]=1 $ test -v A || echo not defined not defined Should it? 'test -v A' is equivalent to 'test -v A[0]' $ test -v A[1] || echo not defined $ test -v A[2] || echo not defined not defined if index is specified, it would be ok to have it return false. It would be a better way to test if an array contains a value (other than variable expansion). $ test -v A[@] || echo not defined This only fails when A is an empty array, which might be correct. Regards, --- Luiz Angelo Daros de Luca luizl...@gmail.com