等待-n; 不等待所有子壳完成

Ale*_*lls 0 bash shell

我有这个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调用后运行.

我如何使用等待或其他构造,以便等待所有子壳完成?

hek*_*mgl 5

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)