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

时间:2017-02-13 08:40:33

标签: 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}

来自我的日志输出,似乎非常清楚其中一个子shell在wait -n调用之后运行。

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

1 个答案:

答案 0 :(得分:5)

help wait非常清楚:

  

如果提供了-n选项,则等待下一个作业终止并且       返回退出状态。

使用wait代替wait -n

如果您对所有三个返回值感兴趣,请使用:

for i in 1 2 3 ; do
    wait -n
    echo "exit code $?"
done
相关问题