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"