您好我有一个脚本mainscript.sh 在主脚本中,我有多个智能脚本。
child1.sh
child2.sh
child3.sh
rm -rf /home/bdata/batch/*
我正在运行我的mainscript.sh,它将并行运行所有子作业。
mainscript.sh
child1.sh &
child2.sh &
child3.sh &
rm -rf /home/bdata/batch/*
第4个语句在完成所有执行之前运行。
在完成3个并行的脚本之后,有什么方法可以控制最后一行的执行。
答案 0 :(得分:2)
这是一个解决方案:
#!/bin/bash
./child1.sh &
./child2.sh &
./child3.sh &
使用./
或脚本的完整路径。
如果命令由控制操作符&
终止,那么shell
在子shell中在后台执行命令。外壳确实如此
不要等待命令完成,返回状态为0.如果要在退出脚本之前执行所有子脚本,则在末尾添加wait
(如下面的@Mark Setchell所述)。
答案 1 :(得分:2)
简单地告诉shell等到孩子都死了:
child1.sh &
child2.sh &
child3.sh &
wait
rm -rf /home/bdata/batch/*