줄을 읽을 때 이스케이프된 공백이 보존됩니까?

줄을 읽을 때 이스케이프된 공백이 보존됩니까?

파일의 각 줄에서 루프를 실행합니다.

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.shuser\ name됩니다 user name.

개행을 유지하기 위해 while 루프를 수정하는 방법이 있습니까?

답변1

-r변수에 플래그와 큰따옴표를 추가하여 문제를 해결할 수 있었습니다 .

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

유제.

관련 정보