Während des Lesens der Zeile Escape-Leerzeichen beibehalten?

Während des Lesens der Zeile Escape-Leerzeichen beibehalten?

Ich führe für jede Zeile einer Datei eine Schleife aus.

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

Die Datei ist wie folgt formatiert:

user\ name user\ password

$1So dass jede Zeile und $2für enthält connect.sh.

Doch es scheint, dass bei meiner While-Schleife $linedie Zeilenumbrüche vor der Übergabe an verloren gehen, connect.shsodass user\ namedaraus wird user name.

Gibt es eine Möglichkeit, meine While-Schleife so zu ändern, dass die Zeilenumbrüche beibehalten werden?

Antwort1

Ich konnte das Problem beheben, indem ich das -rFlag hinzugefügt und die Variable in doppelte Anführungszeichen gesetzt habe.

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

Ähnliche SO-Frage.

verwandte Informationen