我有這樣的bash腳本:wait -n;是不是等待所有子shell完成
#!/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}
從我的日誌輸出,似乎很明顯,次外層之一wait -n
呼叫後運行。
我該如何使用等待或其他構造來等待所有子殼體完成?
wait'後'寬鬆'-n'。順便說一句,你的'EXIT = $?'是可疑的,它會得到前面'echo'語句的退出碼。 – cdarke
@cdarke是的,這是真的 –