我创建了两个文件,即file1.txt和file2.txt。当我写时
echo < file1.txt
它返回一个空行。但是cat < file1.txt
返回file1.text.的内容
既然echo打印发送给它的任何内容,为什么echo不打印file1.txt的内容?
这是重复的,已解决:https://unix.stackexchange.com/questions/63658/redirecting-the-content-of-a-file-to-the-command-echo
你可以将所有你想要的重定向到echo
,但它不会对它做任何事情。echo
不读取它的标准输入。它所做的只是向标准输出写入由空格字符分隔并由换行符终止的参数(以及一些扩展了转义序列的echo
实现和/或以-
开头的参数可能被视为选项(。
如果希望echo
显示文件的内容,则必须将该内容作为参数传递给echo
。类似于:
echo "$(cat my_file.txt)"
请注意,$(...)
会从该cat
命令的输出中去掉尾随的换行符,而echo
会向后添加一个。
还要注意,除了使用zsh
之外,您不能在命令的参数中传递NUL字符,因此以上内容通常不适用于二进制文件。yash
还将删除不属于有效字符的字节。
如果想要这样做的原因是因为您希望echo
扩展n
、b
、