tenho um text.txt
arquivo assim
line1
line2
line3
Eu quero escrever um script que faça um loop em cada linha e ecoe
modified line1
modified line2
modified line3
Este é o script que é uma solução muito comum:
while IFS= read -r line; do
echo modified $line
done <<< $(cat ~/text.txt)
Mas a saída que obtive foi:
modified line1 line2 line3
O que deu errado?
O problema está na última linha, você não precisa da variável (substituição de comando) ou
cat
, poisread
já consegue ler o arquivo. Se em vez disso você fizer isso:Funciona.
Além disso, seu comando funcionaria se você citasse a variável como:
já que o bash desconsidera as novas linhas nas variáveis, a menos que você as cite. Mas fazer isso dessa maneira é complicar demais.