При чтении строки сохраняются экранированные пробелы?

При чтении строки сохраняются экранированные пробелы?

Я запускаю цикл для каждой строки в файле.

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

Файл имеет следующий формат:

user\ name user\ password

Так что каждая строка будет содержать $1и $2для connect.sh.

Однако, похоже, мой цикл while $lineтеряет переносы строк перед передачей, connect.shпоэтому он user\ nameстановится user name.

Можно ли как-то изменить цикл while, чтобы сохранить переносы строк?

решение1

Мне удалось решить эту проблему, добавив флаг -rи заключив переменную в двойные кавычки.

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

Похожий вопрос SO.

Связанный контент