无法使用bash read命令从文件中读取行

无法使用bash read命令从文件中读取行,bash,Bash,创建了一个文本文件,名为hello_world.rtf,仅包含以下两行: 你好 世界 并尝试使用以下bash脚本从终端读取上述文件: while test= read -r line; do > echo "The text read from file is: $line" > done < hello_world.rtf 有什么建议吗?这里有什么问题?如何才能得到清晰的结果?表示富文本格式。它是一种用于文本格式化的语言,主要由Microsoft开发和使

创建了一个文本文件,名为hello_world.rtf,仅包含以下两行: 你好 世界

并尝试使用以下bash脚本从终端读取上述文件:

while test= read -r line; do
> echo "The text read from file is: $line"
> done < hello_world.rtf
有什么建议吗?这里有什么问题?如何才能得到清晰的结果?

表示富文本格式。它是一种用于文本格式化的语言,主要由Microsoft开发和使用,并在一段时间内被弃用

文件中的文本看起来就像您在代码输出中看到的一样。它包含单词“Hello”和“World”,但也包含格式说明

将文件另存为纯文本,而不是RTF,它将只包含您在其中键入的文本


test=
前面的
read
在这种情况下没有任何效果。您可以删除它

确保文件的最后一行以新行字符结尾。返回非零退出状态(这意味着
false
),当它到达文件末尾时,您的代码退出
while
循环,并且不显示
read
读取的最后一个值。如果文件以新行字符结尾,则最后一行(已读取但代码未列出)为空,因此不会丢失任何内容

建议文本文件始终以字母结尾



或者,您可以在循环后再次打印
行的值。它包含文件的最后一行(从最后一行结束字符到文件结束)。

表示富文本格式。它是一种文本格式语言(主要由Microsoft开发和使用,但有一段时间被弃用)。文件中的文本看起来就像您在代码输出中看到的一样。它包含单词“Hello”和“World”,但也包含格式说明。将文件另存为纯文本,而不是RTF,它将只包含您在其中键入的文本。
test=
前面的
read
没有任何效果。谢谢@axiac,我删除了“test=”并将文件更改为txt文件,现在它只返回一行,即从文件读取的文本是:Hello。我希望“World”也有类似的一行。确保第二行以新行字符结尾<代码>读取
到达文件末尾时返回
,代码退出
while
循环,不显示
读取的最后一个值。如果文件以新行字符结尾,则最后一行(已读取但代码未列出)为空,因此不会丢失任何内容。建议文本文件始终以换行符结尾。或者,您可以在循环后再次打印
行的值。超级!!!现在它就像一个符咒。非常感谢@axiac
The text read from file is: {\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf500
The text read from file is: {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
The text read from file is: {\colortbl;\red255\green255\blue255;}
The text read from file is: {\*\expandedcolortbl;;}
The text read from file is: \paperw12240\paperh15840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
The text read from file is: \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
The text read from file is: 
The text read from file is: \f0\fs24 \cf0 Hello\