行を読み取りながら、エスケープされたスペースを維持しますか?

行を読み取りながら、エスケープされたスペースを維持しますか?

ファイル内の各行でループを実行しています。

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

ファイルの形式は次のようになります。

user\ name user\ password

各行に および が含まれるようにし$1ます。$2connect.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の質問

関連情報