Configurando $ temp
Primeiro, certifique-se de ter configurado a variável $temp
corretamente:
$ temp="abc,1,2,3,4,5,6"
$ echo "$temp"
abc,1,2,3,4,5,6
Exemplo simples
Eu usei a seguinte abordagem para fazer isso:
$ echo "$temp" | tr ',' '\n' | grep -v abc | awk '{sum+=$1};END{print sum}'
21
Seu exemplo
Em relação à sua abordagem, você esqueceu de imprimir os arrays acumulados com um bloco END{...}
:
$ echo "$temp" | awk '{split($0,a,","); name=a[1]
for(i=2;i<=4;i++) sum1+=a[i] ; for(i=5;i<=7;i++) sum2+=a[i] }
END{print sum1; print sum2}'
6
15
Salvando para depois
O Awk não tem um método para injetar resultados no shell do pai de onde ele foi chamado, então você terá que ser um pouco esperto e salvar seus resultados em um array no Bash.
Exemplo
$ myarr=($(echo "$temp" | awk '{split($0,a,","); name=a[1]
for(i=2;i<=4;i++) sum1+=a[i] ; for(i=5;i<=7;i++) sum2+=a[i] }
END{ print sum1; print sum2}'))
O texto acima está fazendo isso:
$ myarr=($(...awk command...))
Isso resultará em seus valores de sum1
e sum2
sendo salvos na matriz $myarr
.
Acessando o array $ myarr
Eles são acessíveis assim:
$ echo "${myarr[@]}"
6 15
$ echo "${myarr[0]}"
6
$ echo "${myarr[1]}"
15