我想在bash中运行后台任务并将其结果赋值给一个变量。我不想使用临时文件,并且希望同时运行多个类似的后台任务。
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或临时文件。
更明确地说,在我看来,这不是一个简单的问题:
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:/#
sleep
。为什么不直接写成sleep 2 && var=$(echo "hello world") &
? - fedorqui