A sintaxe correta é esta:
while read my_pass
do
echo $my_pass | sudo -S command
done < file_name
Três comentários: você não pode usar su dentro de um arquivo de script, você precisará usar sudo com a opção -S que, de acordo para o homem,
The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device.
Segundo, se você não gosta de escrever o nome_do_arquivo dentro do script, use um dos argumentos $ n, como $ 1 se for o único parâmetro passado.
Em terceiro lugar, você tem certeza de que coletar todas as suas senhas em um único arquivo não criptografado é uma boa ideia?