我试图在while循环迭代期间保留输入文件中的所有空格。这是我正在使用的文件(file1):
a@ubuntu:~$ cat file1
01: a b c
02: d e f
如您所见,我在每行的字符之间放置了标签。我想在输出上保留这些标签。我尝试在while循环中清除IFS,如下所示:
while IFS= read -r p; do
echo $p
done < <(cat file1)
即使我清除了IFS(我也尝试过echo -e),结果也因为某种原因而摆脱了标签:
a@ubuntu:~$ sudo bash a.sh
01: a b c
02: d e f
但是,当我在while循环之外清除IFS时,它可以完美地运行:
IFS=''
while read -r p; do
echo $p
done < <(cat file1)
这是输出;标签保留:
a@ubuntu:~$ sudo bash a.sh
01: a b c
02: d e f
当我在与while循环相同的行中清除IFS时,为什么选项卡无法保留?
答案 0 :(得分:4)
引用你的变量:
while IFS= read -r p; do
echo "$p";
done < file1
请注意,您也不需要使用cat
。