Bash
無法確定未記錄退出程式碼的原因
奇怪的一個,所以下面不會記錄“bash 退出程式碼…”
#!/usr/bin/env bash OUTPUT_PATH=${PROJECT_ROOT:-$PWD}/npm-install-output.log npm --loglevel=warn --progress=false install > ${OUTPUT_PATH} 2>&1 && export NODE_PATH=${NODE_PATH}:~/.suman/node_modules && node $(dirname "$0")/test.js && EXIT=$? && echo " " && # newline echo "bash exit code => $?" && exit ${EXIT}
node
如果我在命令之後刪除一個“&&”,如下所示:#!/usr/bin/env bash OUTPUT_PATH=${PROJECT_ROOT:-$PWD}/npm-install-output.log npm --loglevel=warn --progress=false install > ${OUTPUT_PATH} 2>&1 && export NODE_PATH=${NODE_PATH}:~/.suman/node_modules && node $(dirname "$0")/test.js # <<<<< removed "&&" chars EXIT=$? && echo " " && # newline echo "bash exit code => $?" && exit ${EXIT}
然後節點程序將以非零程式碼退出,但是 bash 說:
bash 退出程式碼 => 0
這兩個都沒有給出正確的結果,我的程式碼有問題。我想擷取節點程序的正確退出程式碼,我想列印出來!有什麼問題?
$?
是你最後一個命令的退出狀態。在這種情況下,它總是返回 0,因為它echo " "
是成功的。請使用$EXIT
代替$?
#!/usr/bin/env bash OUTPUT_PATH=${PROJECT_ROOT:-$PWD}/npm-install-output.log npm --loglevel=warn --progress=false install > ${OUTPUT_PATH} 2>&1 && export NODE_PATH=${NODE_PATH}:~/.suman/node_modules && node $(dirname "$0")/test.js # <<<<< removed "&&" chars EXIT=$? && echo " " && # newline echo "bash exit code => $EXIT" && exit ${EXIT}