在 shell 脚本中读取文件时缺少字符

character missing when reading from file in shell script

在 shell 脚本中 我试图使用 while 循环逐行读取文件,但字符 'n' 在所有行中都被空白 space 替换。

这是 cat namespaces.tx

的输出
     cat namespaces.txt
default
kube-node-lease
kube-public
kube-system
name
mane
mann

这是从 while 循环读取时打印的输出

while IFS=$'\n' read -r line; do echo $line; done < namespaces.txt
default
kube- ode-lease
kube-public
kube-system
ame
ma e
ma
while IFS= read -r line; do
    echo "$line"
done < namespaces.txt

这是一次读取和打印一行的正确方法。 "$line"被引用,IFS可以设置为空。

检查脚本中的 IFS=\n 或类似内容。在某处,您已将 IFS 设置为包含 n。然后当你不带引号打印 $line 时,它会被 IFS (n) 分成多个单词,然后 echo 打印给它的每个单词,带有 space介于两者之间。