O código abaixo pode ser facilmente alcançado com codificação mínima.
$ cluster1=(x y)
$ cluster2=(a b)
$ cluster3=(m)
$ my=$((${cluster1[0]+1}+${cluster2[0]+1}+${cluster2[0]+1}))
$ echo $my
3
$ my=$((${cluster1[1]+1}+${cluster2[1]+1}+${cluster3[1]+1}))
-bash: 1+1+: syntax error: operand expected (error token is "+")
Pode ser um truque sujo, mas que tal prefixar um
0
(seguro, pois o "Valor Alternativo" é um número octal válido):Seu código está gerando um erro de sintaxe para cada elemento que não está definido.
Seria melhor contar os elementos do conjunto em vez de tentar calcular com uma expressão gerada neste caso:
Isso cria um novo array,
is_set
, que conterá um1
para cada array que contém um elemento em indexi
. O1
não é importante e pode ser qualquer string. O número de elementos nais_set
matriz (${#is_set[@]}
) é então o número de elementos do conjunto dascluster
matrizes nesse índice.Teste: