从我的脚本中,我运行以下命令:
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