如何在后台执行几个bash函数但是等待输出?

Kev*_*vin 4 parallel-processing bash

我正在尝试使用bash函数来执行多个Web抓取(使用curl等),我想让它们全部在后台执行,并且所有打印输出到stdin.这怎么可能?

Tru*_*ueY 8

这是一个简单的!&即使对于函数,您也可以使用它:

#!/usr/bin/bash

x() { echo =$1=Solaris; sleep 1; echo =$1=East; sleep 1; echo =$1=Panta Rhei;}

x one&
x two&

echo Syrius; sleep 1
echo After Crying 
Run Code Online (Sandbox Code Playgroud)

输出:

=one=Solaris
Syrius
=two=Solaris
=one=East
=two=East
After Crying

Press ENTER or type command to continue
=one=Panta Rhei
=two=Panta Rhei
Run Code Online (Sandbox Code Playgroud)

所以x在后台运行并打印到stdout.这Press ENTER or type command to continue是由呈现的(当我从开始编写脚本时)并显示后台x进程在主脚本完成后完成其工作.如果您想等到所有后台进程完成,您可以使用它$!来获取后台进程的PID和内置wait <PID>的最后一个函数.