gpt4 book ai didi

shell - 文件的最后一行未在 shell 脚本中读取

转载 作者:行者123 更新时间:2023-12-04 13:21:10 25 4
gpt4 key购买 nike

我有一个文本文件foo.txt,内容是下面的文本,

1
2
3
4
5

我有一个 shell 脚本,

file="foo.txt" 
while IFS= read -r line
do
echo "$line"
done < "$file"

但这只打印到 4

实际输出:

1
2
3
4

如何得到如下预期的输出?

预期输出:

1
2
3
4
5

最佳答案

这是因为输入文件的最后一行缺少换行符。

您可以使用此循环来读取所有内容:

while IFS= read -r line || [ -n "$line" ]; do
echo "$line"
done < "$file"

对于没有换行符的最后一行,read 不会返回成功,因此 [ -n "$line"] 检查以确保打印它当 $line 不为空时。

PS:如果你不介意改变你的输入文件,那么使用 printf 来追加一个换行符:

printf '\n' >> "$file"

然后正常阅读:

while IFS= read -r line; do
echo "$line"
done < "$file"

关于shell - 文件的最后一行未在 shell 脚本中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52495289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com