echo aaa > >(echo $(cat))
在我看来,它应该打印“aaa”然后退出,但是除非我按下回车键,否则它会停止,为什么?
THX
答案 0 :(得分:8)
它不是等你在完成之前按Enter键。该命令立即完成,但在下一个shell提示符后打印其输出。它看起来像:
barmar@dev:~$ echo aaa > >(echo $(cat))
barmar@dev:~$ aaa
这是因为shell不等待进程替换中的命令完成,它只是等待echo
命令完成。因此,只要echo
完成,它就会打印下一个提示,然后echo $(cat)
以异步方式运行并打印其输出。
如果此时键入另一个命令,它将起作用。它看起来很奇怪,因为输出是在提示后打印的。如果您想在自己的行上有新提示,则只需按 Enter 。
答案 1 :(得分:2)