回答
你问为什么这是行不通的。事实上,它确实有效;它的确如你所说的那样做。显然这不符合你的预期。我认为你期望它打印123
,但你实际上没有这么说。
(注: “标准输入” 是标准的输入; “标准输出” 是标准输出。)
/bin/echo 123 | /bin/echo
这里发生了什么。执行echo
命令的参数为123
。它在标准输出中写入“123”,后跟一个换行符。
标准输出通过管道(|
)重定向到第二个echo
命令的标准输入。由于echo命令忽略它的标准输入,所以第一个回声的输出被安静地丢弃。既然你没有给第二个echo命令任何参数,它不会打印任何东西。 (实际上,/斌/回声不带参数的一般打印一个空行,你看到了吗?)
通常管道(|
)与过滤器,从标准输入读取和写入到stdout程序使用。 cat
可能是最简单的过滤器;它只是读取它的输入并将其写入其输出中(这意味着some-command | cat
可写为some-command
)。
一个非平凡的过滤器的例子是rev
,它将stdin复制到标准输出,同时反转每行中的字符。
echo 123 | rev
打印
321
rev
是一个过滤器; echo
不是。echo
确实会打印到标准输出,所以将它放在管道的左侧是有意义的,但它不会从标准输入读取,因此在管道的右侧使用它是没有意义的。
/bin/echo 123 < /bin/echo
管道= concate
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-4.html
管道让你使用一个程序的输出作为输入另一个
“回声” 从读命令行,而不是标准输入。所以管道不在这里工作。
从bash的手册:
echo [-neE] [arg ...]
Output the args, separated by spaces, terminated with a newline.
所以,你的第一个回波没有打印“123”站输出,然而,第二回声没有利用它使“123”被丢弃。然后打印一个空行,就像运行“echo”一样。
您可以使用cat基思·汤普森建议:
echo 123|cat
对。试试'/ bin/echo 123 | /斌/ cat'。 (当然一个简单的'echo 123'也是一样的。) –
。猫是他所需要的。 –
谢谢,但我的问题不是如何将字符打印到屏幕上。这就是为什么我尝试的echo构造不起作用。这是个很大的差异。 – abc
- 1. 为什么这个JavaScript不起作用?
- 2. 为什么这个SQL不起作用?
- 3. 为什么这个XQuery不起作用?
- 4. 为什么这个re.search不起作用
- 5. 为什么这个dockset不起作用?
- 6. 为什么这个xpath不起作用?
- 7. 为什么这个makefile不起作用?
- 8. 为什么这个jquery不起作用?
- 9. 为什么这个promise.all不起作用?
- 10. 这个jquery为什么不起作用?
- 11. 为什么这个keyListener不起作用?
- 12. 这个JSON为什么不起作用?
- 13. 这个XSS为什么不起作用?
- 14. 这个join()为什么不起作用?
- 15. 为什么这个JavaScript不起作用?
- 16. 这个包为什么不起作用?
- 17. 为什么这个JavaScript不起作用?
- 18. 这个DMAX为什么不起作用?
- 19. 这个DataTrigger为什么不起作用?
- 20. 为什么这个XSLT不起作用?
- 21. 为什么这个qsort()不起作用?
- 22. 这个subprocess.check_call()为什么不起作用?
- 23. 为什么这个JavaScript不起作用?
- 24. 为什么“这个”不起作用?
- 25. 为什么这个StringFormat不起作用?
- 26. 为什么这个String.equals()不起作用?
- 27. 这个.equals()为什么不起作用?
- 28. 为什么这个.htaccess不起作用?
- 29. 为什么这个makefile不起作用?
- 30. 为什么这个pushViewController不起作用?
谢谢。答案是“回声忽略标准输入”! – abc