在 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介于两者之间。
在 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介于两者之间。