Ale*_*lls 3 bash shell-script exit exit-status
奇怪的一个,所以以下不会记录“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}
Run Code Online (Sandbox Code Playgroud)
如果我在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}
Run Code Online (Sandbox Code Playgroud)
然后节点进程将以非零代码退出,但随后 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}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
79 次 |
最近记录: |