You can use variables in for loops, but not inside of a {}. Someone else can probably do a better job of explaining this, but the bottom line is it has to do with the order in which the shell interprets what you're putting into it. As I recall (and to be honest, I usually just learn how things work, not why, so you should probably look this up...) the reason is that expanding the {} is the very first thing the shell does, BEFORE it translates the variable into it's value. So, if you're trying to do:
(
15:45:24\[root@DeCoBoxOmega)
[~]$ x=5
(15:47:46\[root@DeCoBoxOmega)
[~]$ for i in {1..$x};do echo $i;done
What the shell is actually doing is for i in the literal expression {1..$x} because $x doesn't mean anything yet.
Using eval is even worse. eval is inefficient and a security hole. Use a for-loop or while-loop; these don't need to calculate all numbers from 1 to N before beginning the loop, unlike {1...10000000000}