Tudo parece bem, você só precisa canalizar um cat
para o loop:
cat /ora/do.lst | while read -r line
do
if [[ -z $line ]]
then
echo "The list is empty "
exit
else
lst_no=${line},
echo "${line} is processing now "
fi
done
Esta não é, obviamente, a melhor maneira de processar linhas, mas presumo que seja apenas para fins de aprendizagem.
Um pouco melhor seria, pelo menos, evitar cat
inútil e pipe desnecessário:
while read -r line; do
...
done </ora/do.lst
ou melhor ainda, para preservar stdin para comandos dentro de loop:
while read -r line <&3; do
...
done 3</ora/do.lst
No entanto, se o seu arquivo tiver muitas linhas, convém reescrever o script em awk
, perl
ou outra ferramenta dedicada à tarefa de processamento de texto. Loops de shell não são otimizados nesse sentido.