Bash

無法確定未記錄退出程式碼的原因

  • December 20, 2016

奇怪的一個,所以下面不會記錄“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}

引用自:https://unix.stackexchange.com/questions/331588