とても奇妙なので、いいえ「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}