Sua abordagem está correta, ${#arr[@]}
fornecerá o número de elementos na matriz (neste caso, 3):
$ var_names='test1 tutorial2 test3w'
$ arr=($var_names)
$ echo ${#arr[@]}
3
Você também pode retornar os comprimentos de string dos elementos individuais da matriz usando ${#arr[0]}
, ${#arr[1]}
e assim por diante:
$ echo "${#arr[0]}"
5
$ echo "${#arr[1]}"
9
$ echo "${#arr[2]}"
6
O motivo pelo qual $arr
retorna apenas o primeiro elemento test1
é que é equivalente a ${arr[0]}
; se você quiser retornar toda a matriz, você pode usar ${arr[@]}
ou ${arr[*]}
:
echo "${arr[@]}"
test1 tutorial2 test3w
Veja a seção Arrays
de man bash