行を読み取るときにエスケープされたスペースは保存されますか?

行を読み取るときにエスケープされたスペースは保存されますか?

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

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

このファイルの形式は次のとおりです。

user\ name user\ password

これにより、各行に$1$2forが含まれますconnect.sh

$lineしかし、私のwhileループはに渡される前に改行文字を失うようになりconnect.shます。user\ nameuser name

改行を維持するためにwhileループを修正する方法はありますか?

ベストアンサー1

-r変数にフラグと二重引用符を追加することで問題を解決できました。

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

エマルジョン

おすすめ記事