Usando $ # em loops bash

Eu estou tentando entender por que este loop não imprime um número para cada argumentos fornecidos para o script.

#!/bin/bash

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

Em vez disso, quando fornecido, e. 3 argumentos, saídas

{1..3}