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)
实际上,echo如果您实际上通过防止发生单词分割来提供多行字符串,则可以在多行字符串上正常工作.你可以通过在双引号内包含命令替换来实现这一点,这会阻止单词拆分,但不会扩展.
这将工作(虽然它是无用的冗长):
echo "`who | cut -d' ' -f1 | sort | uniq`" > users.txt
Run Code Online (Sandbox Code Playgroud)
当然,这里正确的解决方案是避免命令替换(反引号,相当于封闭内部$()),如另一个答案中所建议的那样,但是在很多情况下使用引用命令替换(即将参数传递给除了命令之外的命令)echo)很有用.