Seu código está gerando um erro de sintaxe para cada elemento que não está definido.
$ echo "${cluster1[0]+1}+${cluster2[0]+1}+${cluster2[0]+1}"
1+1+1
$ echo "${cluster1[1]+1}+${cluster2[1]+1}+${cluster3[1]+1}"
1+1+
Seria melhor contar os elementos do conjunto em vez de tentar calcular com uma expressão gerada neste caso:
#!/bin/bash
cluster1=(x y)
cluster2=(a b)
cluster3=(m)
for (( i = 0; i < 3; ++i )); do
is_set=( ${cluster1[i]+"1"} ${cluster2[i]+"1"} ${cluster3[i]+"1"} )
printf 'i=%d:\t%d\n' "$i" "${#is_set[@]}"
done
Isso cria uma nova matriz, is_set , que conterá 1 para cada matriz que contém um elemento no índice i . O 1 não é importante e pode ser qualquer string. O número de elementos na matriz is_set ( ${#is_set[@]} ) é o número de elementos de conjunto das matrizes cluster nesse índice.
Teste:
$ bash script.sh
i=0: 3
i=1: 2
i=2: 0