为什么回声不退出

Hen*_*nry 1 bash pipeline echo

echo aaa > >(echo $(cat))
Run Code Online (Sandbox Code Playgroud)

在我看来,它应该打印"aaa"然后退出,但除非我按下回车键,否则它会停止,为什么?

谢谢

Bar*_*mar 8

在完成之前,它不会等待您按Enter键.该命令立即完成,但在下一个shell提示符后打印其输出.看起来像:

barmar@dev:~$ echo aaa > >(echo $(cat))
barmar@dev:~$ aaa
Run Code Online (Sandbox Code Playgroud)

这是因为shell不等待进程替换中的命令完成,它只是等待echo命令完成.因此,它会在echo完成后立即打印下一个提示,然后echo $(cat)以异步方式运行并打印其输出.

如果此时键入另一个命令,它将起作用.它看起来很奇怪,因为输出是在提示后打印的.Enter如果您想在自己的行上有新提示,则只需按.