我希望将两个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应用程序的参数。
答案 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)"