我有这个bash脚本:
#!/usr/bin/env bash
DIRN=$(dirname "$0")
OUTPUT_PATH=${PROJECT_ROOT:-$PWD}/npm-install-output.log
(cd $(dirname "$0")/one && echo $PWD && rm -rf node_modules ; npm --loglevel=warn --progress=false install) &
(cd $(dirname "$0")/two && echo $PWD && rm -rf node_modules ; npm --loglevel=warn --progress=false install) &
(cd $(dirname "$0")/three && echo $PWD && rm -rf node_modules ; npm --loglevel=warn --progress=false install) &
wait -n; echo "EXIT CODE => $?"
EXIT=$?
echo " all done with parallel installs "
echo " => bash exit code for script '$(dirname "$0")/$(basename "$0")' => $EXIT" &&
exit ${EXIT}
Run Code Online (Sandbox Code Playgroud)
从我的日志记录输出中可以看出,其中一个子shell在wait -n调用后运行.
我如何使用等待或其他构造,以便等待所有子壳完成?
help wait 非常清楚:
如果提供该
-n选项,则等待下一个作业终止并返回其退出状态.
用wait而不是wait -n
如果您对所有三个返回值感兴趣,请使用:
for i in 1 2 3 ; do
wait -n
echo "exit code $?"
done
Run Code Online (Sandbox Code Playgroud)