如何顺序运行“&”运算

如何顺序运行“&”运算

从我的脚本中,我运行以下命令:

 SCRIPT_1="ksh -x script1.sh & ksh -x script2.sh";
 SCRIPT_2="ksh -x script3.sh & ksh -x script4.sh";
 eval $SCRIPT_1;
 sleep 20s;
 eval $SCRIPT_2;

我只想在完成$SCRIPT_2后执行$SCRIPT_1。但目前它们都同时执行,无论它们是在单独的行中执行的。

关于如何在执行下一个脚本之前等待另一个脚本完成的想法吗?

答案1

SCRIPT_1="ksh -x script1.sh & bg_pid=$!; ksh -x script2.sh; wait $bg_pid";
SCRIPT_2="ksh -x script3.sh & bg_pid=$!; ksh -x script4.sh; wait $bg_pid";
eval $SCRIPT_1;
sleep 20s;
eval $SCRIPT_2;

答案2

使用 GNU Parallel 你会做类似的事情:

parallel ksh -x ::: script1.sh script2.sh
parallel ksh -x ::: script3.sh script4.sh

相关内容