我有这个bash脚本(实际上是https://github.com/ddollar/heroku-buildpack-multi/blob/master/bin/compile的一部分,我已经添加了回声)
echo "[DEBUG] chmod done"
framework=$($dir/bin/detect $1)
echo "[DEBUG] $framework done"
我在日志中看到:
[DEBUG] chmod done
Staging failed: Buildpack compilation step failed
我根本没有在日志中看到第二个回声。 不幸的是,我不太了解bash。任何人都可以向我解释第一个回声执行的情况,第二个不执行吗?我一直认为无论第二行是否成功,两个回声都应该始终有效。
答案 0 :(得分:3)
在您的问题中看不到,但点击您的链接,它在第三行中说明
"R 3.2 64bit"
这意味着每当发生错误时立即停止处理脚本。注释该行,脚本应该运行并打印第二个set -e
语句。
请注意,我没有检查脚本实际执行的操作,如果评论echo
是否真的是好建议,我无法告诉您。
来自set -e
:
-e:启用此选项时,任何命令失败(由于列出的任何原因) 在2.8.1节,Shell错误的后果或返回退出状态 大于零),外壳立即退出,但以下情况除外 蒸发散:
man set