Parece que você quer apenas contar o número de linhas exclusivas resultantes de fold -w3 $dnafile . Isso pode ser feito sem um loop:
fold -w3 "$dnafile" | sort | uniq -c
O sort classificaria as linhas da saída de fold , enquanto uniq -c contaria o número de vezes que cada linha ocorre consecutivamente.
A saída será uma linha para cada linha exclusiva no resultado fold prefixado com um número.
O erro de sintaxe vem do fato de que uma substituição de comando (ou seja, uma construção que é substituída pela saída de um comando) precisa se parecer com $( ... ) . Não tenho certeza se inserir o $ ausente realmente fará seu código funcionar, já que o shell ainda dividirá o texto resultante em novas linhas e espaços, mas como não sabemos como são os dados de entrada, é difícil especular .
Ter um sub-shell, (...) , em um loop for nessa posição não é permitido.