Você só precisa usar:
echo {#cws[@]}
-
{#cws}
é normalmente usado para retornar o comprimento de uma string - o
[@]
é importante, porque sem isso, o valor de$cws
não é a matriz inteira, ele é o primeiro elemento do valor da matriz, também conhecido como$cws[0]
Por exemplo, em nosso prompt de comando, podemos fazer uma matriz simples de três elementos semelhante à sua:
$ cws[0]="11"; cws[1]="2"; cws[3]="8"
Agora veja o que acontece quando nos referimos apenas a $cws
:
$ echo $cws
11
Então, ao usar a expansão bash para determinar o tamanho de algo, {#
... }
, sem o [@]
, você escreve ${#cws}
, $cws
é 11
, então você está pedindo bash "qual é o comprimento de 11"? e, claro, o bash olha para a string 11
que tem dois caracteres, então Bash diz 'Oh, é 2':
$ echo ${#cws}
2
Então, é por isso que para especificar você quis dizer o tamanho do array, lembre-se do [@]
:
$ echo ${#cws[@]}
3