Não há necessidade de usar eval nesta instância
eval $i forces eval para avaliar o conteúdo de i como um comando - é por isso que você vê erros como b: command not found sendo relatados
A melhor maneira seria imprimir valores de parâmetro com o bash usando a variável deferenciamento
for i in a b c; do echo "$i=${!i}"; done
a=1
b=2
c=3