将两个Java程序的输出存储在bash变量中
我想将两个Java程序的输出存储到专用的 bash变量。我试过这个:将两个Java程序的输出存储在bash变量中,java,bash,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应用程序的参数。的&左侧部分在子shell中开始
$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应用程序的参数。的
&
左侧部分在子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)"
请注意,第一行不是以美元符号开头。的
&
左侧部分在子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)"
请注意,第一行不是以美元符号开头的。事实上,我找到了一种方法:
echo -n "$(java Server $p $ps)", & echo -n "$(java Client p:$p h:$h n:$n k:$k d:$d ps:$ps 2>&1)"
事实上,我找到了一种方法:
echo -n "$(java Server $p $ps)", & echo -n "$(java Client p:$p h:$h n:$n k:$k d:$d ps:$ps 2>&1)"
谢谢你,乔洛巴。不幸的是,这样服务器会一直监听客户端程序,而脚本永远不会结束。也许我必须为服务器启动一个新的shell并在那里进行输出?谢谢@choroba。不幸的是,这样服务器会一直监听客户端程序,而脚本永远不会结束。也许我必须为服务器启动一个新的shell并在那里进行输出?