Как сохранить обратную косую черту при чтении из файла?
Когда я использую "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
"\" ушел.
Есть ли способ сохранить "\" и "пробел" одновременно?
Ответы
Ответ 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 плюс Кейт Томпсон.