Linux 如何将后台作业的输出分配到bash变量中?
我想在bash中运行一个后台作业,并将其结果分配给一个变量 我不喜欢使用临时文件,我希望同时运行多个类似的后台任务Linux 如何将后台作业的输出分配到bash变量中?,linux,bash,Linux,Bash,我想在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
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并行或临时文件
更清楚地说,这不是一个无关紧要的问题,我想:
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
希望能有帮助。我不明白你为什么睡不着觉。你为什么不说
sleep 2&&var=$(echo“hello world”)&
?@fedorqui,这只是一个玩具模式的例子,以演示我想要实现的目标。考虑插入括号是异步操作(IO)长执行时间命令的情况。OK,我明白了。可能值得一读。我还没有完全看清楚,但可能包含有趣的信息。@0x90:我搞错了。你考虑过使用命名管道吗?嗯,不要成为root
,尤其是当你不知道自己在做什么的时候。这是个好主意。FIFO也是阻塞的,因此人们也可以将其用作同步机制。