Подтвердить что ты не робот

Как сохранить обратную косую черту при чтении из файла?

Когда я использую "cat test.file", он будет показывать

printf "This is a test log %d \n, testid";
 1
  2

Когда я использую файл bash,

IFS=""
while read data
do
    echo "$data"
done << test.file

Он покажет

printf "This is a test log %d n, testid";
 1
  2

"\" ушел.

Есть ли способ сохранить "\" и "пробел" одновременно?

4b9b3361

Ответ 1

Попробуйте использовать read -r.

На странице man:

-r
    Если эта опция задана, обратная косая черта не действует как побег персонаж.     Обратная косая черта считается частью линии. В частности, обратная косая черта     пара не может использоваться как продолжение строки.

Выполните это, чтобы проверить его:

read -r a < <(echo "test \n test"); echo $a

Ответ 2

data="$(cat < test.file)"
for line in $data
do
echo "$line"
done

Ответ 3

#!/bin/bash

# Store the original IFS
OIFS="$IFS"
# Update the IFS to only include newline
IFS=$'\n'
# Do what you gotta do...
for line in $(<test.file) ; do 
    echo "$line"
done
# Reset IFS
IFS="$OIFS"

В значительной степени, когда вы возглавляли предложение IFS плюс Кейт Томпсон.