在bash变量中存储两个Java程序的输出

时间:2015-11-29 15:22:20

标签: java bash

我希望将两个Java程序的输出存储到专用程序中 bash变量。我试过这个:

$sr="$(java server $p $ps 2>&1)" & rr="$(java client p:$p h:$h n:$n k:$k d:$d ps:$ps 2>&1)"

$sr仍为0$rr设置得像预期一样。

服务器程序在clien程序之前启动非常重要。 另外:服务器程序仅在客户端停止时输出(完成)。 列的所有参数都是它们的原样:java应用程序的参数。

2 个答案:

答案 0 :(得分:0)

&的左侧部分以子shell开头。变量值不能从子shell传播到父shell。

echo $$ ; echo left $BASHPID & echo right $BASHPID

您可以将&放在命令替换中:

sr="$(java server $p $ps 2>&1 &)"
rr="$(java client p:$p h:$h n:$n k:$k d:$d ps:$ps 2>&1)"

请注意,第一行不以美元符号开头。

答案 1 :(得分:0)

实际上,我找到了一种方法:

echo -n "$(java Server $p $ps)", & echo -n "$(java Client p:$p h:$h n:$n k:$k d:$d ps:$ps 2>&1)"