Kev*_*vin 4 parallel-processing bash
我正在尝试使用bash函数来执行多个Web抓取(使用curl等),我想让它们全部在后台执行,并且所有打印输出到stdin.这怎么可能?
这是一个简单的!&即使对于bash函数,您也可以使用它:
#!/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是由vim呈现的(当我从vim开始编写脚本时)并显示后台x进程在主脚本完成后完成其工作.如果您想等到所有后台进程完成,您可以使用它$!来获取后台进程的PID和内置wait <PID>的最后一个函数.