当我使用“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
“\”消失了。
有什么方法可以同时保留“\”和空格吗?
答案 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的建议下去了。