1から10までのループとして

for i in {1..10} ; do
echo ${i}
done

と書いてますが、このループの終端の数字をシェルスクリプト実行時に指定しようと思い

for i in {1..$1} ; do
echo ${i}
done

とし、コマンドラインパラメータとして$1に10を与えたところ、出力が

{1..10}

となってしまい、期待通り動かせません

うまく動作させる方法を知りたいです

seqコマンドを用い、 seq 1 $1 と書き換えると動くことは分かったのですが、上記{}を使った記法を知りたいです