6

如何并行运行一系列命令,并将它们的输出存储在变量中?

我试过了:

output=`(echo -n "started "; sleep 2; echo "stopped") &`

echo "output before=$output"
wait
echo "output after=$output"

停顿了两秒,接着是:

output before=started stopped
output after=started stopped

我期望:

output before=
<2 seconds pause>
output after=started stopped

如何在后台运行一系列命令,并将它们的输出存储在变量中?

4

2 回答 2

6
于 2013-10-14T11:33:35.377 回答
0

我认为原因是对这一行的评估: output=`(echo -n "started "; sleep 2; echo "stopped") &` 即使您想将整个命令放在后台(这会导致返回代码 0,如 devnull 所述) - 但结果未知。并为 $output 赋值 - 它必须等待原始命令退出。

没有将 var 赋值放在后台。

但是@devnull 的解决方法仍然适用。您可以使用命名管道代替文件。

于 2015-06-26T01:22:49.357 回答