echo不会输出多行

Eri*_*rik 1 linux bash shell echo output

我一直在尝试将命令输出到这样的文件:

echo `who | cut -d' ' -f1 | sort | uniq` > users.txt
Run Code Online (Sandbox Code Playgroud)

但内容users.txt是在一条线上.

但是,如果我只是执行这样的命令:

who | cut -d' ' -f1 | sort | uniq
Run Code Online (Sandbox Code Playgroud)

输出在多行上.

如果我使用echo输出这样的命令:

echo `who | cut -d' ' -f1 | sort | uniq`
Run Code Online (Sandbox Code Playgroud)

我得到1行的输出.

这里发生了什么?如何将此命令的输出写入具有多行的文件?

任何帮助都非常感谢.

编辑:

感谢一些评论,我意识到我不需要回声,我可以像这样输出:

who | cut -d' ' -f1 | sort | uniq > users.txt
Run Code Online (Sandbox Code Playgroud)

Fre*_*red 5

实际上,echo如果您实际上通过防止发生单词分割来提供多行字符串,则可以在多行字符串上正常工作.你可以通过在双引号内包含命令替换来实现这一点,这会阻止单词拆分,但不会扩展.

这将工作(虽然它是无用的冗长):

echo "`who | cut -d' ' -f1 | sort | uniq`" > users.txt
Run Code Online (Sandbox Code Playgroud)

当然,这里正确的解决方案是避免命令替换(反引号,相当于封闭内部$()),如另一个答案中所建议的那样,但是在很多情况下使用引用命令替换(即将参数传递给除了命令之外的命令)echo)很有用.