从文件中读取时如何保持反斜杠?

时间:2011-09-07 01:36:14

标签: bash

当我使用“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

“\”消失了。

有什么方法可以同时保留“\”和空格吗?

3 个答案:

答案 0 :(得分:25)

尝试使用read -r

从手册页:

  

-r
      如果给出此选项,则反斜杠不会作为转义   字符。       反斜杠被认为是该行的一部分。特别是,   一个反斜杠换行符       对不能用作续行。

执行此操作以测试它:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

#!/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和Keith Thompson的建议下去了。