我想在 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:/#
使用命名管道这是可能的。但是,我不知道它是否会被视为临时文件:
$ 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
希望能帮助到你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)