There is no need to use eval in this instance
eval $i forces eval to evaluate the contents of i as a command - this is why you see errors such as b: command not found being reported
A better way would be to print parameter values with bash using variable deferencing in this context would be
for i in a b c; do echo "$i=${!i}"; done
a=1
b=2
c=3