Você não precisa usar cat :
while read line; do
echo "$line"
done < my_file
Eu não acho que haja uma maneira mais simples.
Quando quero fazer algo com cada linha de um arquivo, geralmente escrevo
cat my_file | while read a
do
gzip "$a"
done
O gzip é apenas um exemplo, pode ser qualquer coisa.
O que eu estou querendo saber é se existe outra maneira de obter as linhas do que cat file | while read ?
O mais simples, eu acho, seria usar xargs , por exemplo,
xargs -L1 gzip < my_file
A opção -L1 informa xargs para processar uma linha de entrada de cada vez. Você pode dar uma olhada no paralelo GNU , que é muito semelhante ao xargs , mas mais poderoso em algumas situações.
IFS="\n\b"; for i in $MYROWOFCONTENT; do echo $i; done;
Tags bash shell bash-scripting