强制Shell脚本在进程替换后将命令保持在前台

时间:2018-10-23 09:31:56

标签: bash shell process-substitution

我有一个脚本,需要运行一个jar并将其输出重定向到另一个可执行文件,并且需要使用一些不同的参数来运行它。我需要每次都单独运行它,因为它在执行时运行一些测试,并且我不希望它们受到其他正在运行的东西的影响。我的问题是,一旦第一个命令完成了其输出的输出,第二个命令应该继续运行(相当长的时间),但是控制权返回到Shell,并且该命令在后台继续运行。

该脚本的功能类似于:

java path.to.script param1 >(path/to/other/script param2 param3)
java path.to.script param4 >(path/to/other/script param5 param6)

但是第一行中的java命令完成后,它会直接进入下一行,导致path/to/other/script同时执行两次。

更清楚地说,我希望仅在整个第一个命令行完成后,即path/to/other/script完成其工作后,才显示提示。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

process substitution实际上将继续在后台运行,而不是在调用Shell的控制范围内。您可能只是想要

java path.to.script param1 | path/to/other/script param2 param3
java path.to.script param4 | path/to/other/script param5 param6