如何将后台作业的输出分配给bashvariables?

我想在bash中运行一个后台作业,并将其结果赋给一个variables。

我更喜欢不使用临时文件,我喜欢同时运行多个相似的后台任务。

root@root:/# var=$(echo "hello world") root@root:/# echo $var hello world root@root:/# back_var=$(sleep 2s && echo "hello world back") & [1] 2102 root@root:/# wait root@root:/#jobs [1]+ Done back_var=$(sleep 2s && echo "hello world back") root@root:/# echo $back_var root@root:/# 

我不喜欢使用gnu-parallel或temp文件。

更清楚这不是一个微不足道的问题恕我直言:

 root@root:/# back_var_1=$(sleep 4s && echo "Don't waste my time" &) & [1] 26584 root@root:/# wait [1]+ Done back_var_1=$(sleep 4s && echo "Don't waste my time" &) root@root:/# echo $back_var_1 root@root:/# 

用命名管道是可能的。 但是,我不知道它是否会被视为临时文件:

  $ mkfifo pipo $ sleep 4s && echo "this is not fair" > pipo & [1] 25356 $ back_var=$(cat pipo) [1]+ Done sleep 4s && echo "this is not fair" > pipo $ echo $back_var this is not fair 

希望能帮助到你。