如何像 java 线程一样并行 运行 shellscript

How to run shellscript parallely like java thread

嗨,我有一个脚本 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 条语句 运行s 之前完成所有执行。

并行完成以上3个脚本后,有什么办法可以控制最后一行的执行吗?

这是一个解决方案:

#!/bin/bash
./child1.sh &
./child2.sh & 
./child3.sh &

使用 ./ 或脚本的完整路径。

如果命令被控制运算符 & 终止,则 shell 在 subshell 中在后台执行命令。 shell 确实 不等待命令完成,并且 return 状态为 0。如果要在退出脚本之前执行所有子脚本,请在末尾添加 wait(如@Mark Setchell 所写) .

只需告诉 shell 等到 children 都死了:

child1.sh &
child2.sh &
child3.sh &
wait
rm -rf /home/bdata/batch/*