count_$a='grep -a $date $i | grep -i "\"$a\"" | grep smsMoBilling | wc -l'
Há um erro de sintaxe aqui. Em uma atribuição, você precisa colocar um nome de variável antes do =
. Um pedaço de texto mais longo que se expande para um nome de variável não é suportado.
Em vez de gerar nomes de variáveis a partir de partes, use matrizes associativas indexadas pela parte variável. Isso requer um shell que suporte matrizes associativas: ksh93, bash ou zsh. Enquanto você está nisso, não analise a saída de find
(pode funcionar aqui, mas não funciona em geral quando os nomes de arquivo podem conter espaços em branco ou \[*?
). Use globalização e matrizes de shell.
#!/bin/bash
shopt -s globstar
CSV_FILES=(/var/log/**/*.[Cc][Ss][Vv])
KEYWORDS=(MD AG GA)
typeset -A count
for i in "${CSV_FILES[@]}" ; do
for a in "${KEYWORDS[@]}" ; do
count[$a]+=$(grep -a "$date" "$i" | grep -i "\"$a\"" | grep smsMoBilling | wc -l)
done
done