終了コードが記録されていない理由を確認できません。

終了コードが記録されていない理由を確認できません。

とても奇妙なので、いいえ「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は次のように言います。

バッシュ終了コード => 0

どちらも正しい結果を提供しません。私のコードに問題があります。ノードプロセスの正しい終了コードをキャプチャして印刷したい!何が間違っている可能性がありますか?

答え1

$?最後のコマンドの終了状態です。この場合、echo " "成功時には常に0を返します。$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}

関連情報