Tudo o que estiver entre aspas simples será passado exatamente como você digita. Portanto, command '$i' passará uma string contendo os dois caracteres $ e i para o comando.
Você deve usar aspas duplas para obter o valor da variável usado em seu lugar
for i in 'cat $1'
do
command "$i"
done
Ou, como seu código espera uma única palavra por linha no seu arquivo, substitua o loop inteiro por essa única linha:
xargs -n1 -r command <"$1"