Vamos dizer em um arquivo de texto se eu fizer
grep FINAL *.msg
ele retorna
FINAL COMPUTATIONS: Elapsed Time: 000:30:55.65; CPU Time: 000:30:26.53
FINAL COMPUTATIONS: Elapsed Time: 000:28:11.77; CPU Time: 000:27:41.36
Agora, se eu fizer for loop como
for line in `grep FINAL *.msg`
o "$line"
não considera "FINAL COMPUTATIONS: Elapsed Time: 000:30:55.65; CPU Time: 000:30:26.53"
como uma única linha.
Como posso resolver isso?
Tem a ver com a maneira como o shell está dividindo sua entrada. Tenha em mente que, salvo indicação em contrário, qualquer espaço em branco geralmente dividirá as entradas:
DopeGhoti está absolutamente certo, aqui está algo que provavelmente se encaixa um pouco mais. Leia na linha da saída do grep (padrão aplicado a todos os arquivos *.msg no diretório atual) com a ajuda da substituição do processo:
snippet está livre de avisos de shellcheck :)