Enquanto a linha é lida, mantendo espaços de escape?

Enquanto a linha é lida, mantendo espaços de escape?

Estou executando um loop em cada linha de um arquivo.

if [ -e "/tmp/history" ]; then
  while read line; do
    connect.sh $line \
      && break
  done </tmp/history
fi

O arquivo está formatado como:

user\ name user\ password

Para que cada linha contenha $1e $2for connect.sh.

No entanto, parece que meu loop while $lineperde as quebras de linha antes de passar para connect.shisso user\ namese torna user name.

Existe uma maneira de modificar meu loop while para manter as quebras de linha?

Responder1

Consegui resolver o problema adicionando o -rsinalizador e citando duas vezes a variável.

if [ -e "/tmp/history" ]; then
  while read -r line; do
    connect.sh "$line" \
      && break
  done <"/tmp/history"
fi

Pergunta SO semelhante.

informação relacionada